Capítulo 3.5 — Tool use, function calling e MCP¶
🎯 Objetivo¶
Apresentar a camada mais sensível de um agente: ações reais em sistemas reais.
🧠 Conceitos¶
- Tool use - agente usa sistema externo para obter dado ou executar ação.
- Function calling - schema-first; o modelo propõe, a aplicação valida, autoriza e executa.
- Structured outputs - saídas seguem schema versionado.
🛡️ Fluxo obrigatório¶
LLM propõe tool_call -> schema valida -> policy autoriza ->
executor chama sistema -> resultado volta ao modelo ->
síntese final
🧠 Tool registry¶
Catálogo versionado que armazena:
- nome, descrição curta, versão;
- schema de input/output;
- permissões;
- owner;
- criticidade;
- status (experimental, ativa, deprecated, removida);
- política de approval;
- limites de rate e custo;
- runbook;
- changelog.
🧩 MCP (Model Context Protocol)¶
Protocolo aberto para conectar aplicações de IA a tools, resources e prompts via clients e servers. A spec é relativamente recente, em evolução ativa, com adoção crescente entre provedores e SDKs - útil em produção, mas ainda em consolidação, com mudanças não-triviais entre versões.
MCP ajuda em:
- interoperabilidade;
- descoberta;
- separação host/server;
- redução de integrações ad hoc.
MCP NÃO substitui:
- autorização corporativa;
- threat modeling;
- runtime;
- eval harness;
- observabilidade;
- governança;
- aprovação humana;
- versionamento de negócio.
Maturidade. Trate MCP como qualquer dependência de protocolo emergente: pin de versão, revisão de capabilities a cada upgrade, contratos versionados nos servers que você expõe, testes de regressão por integração. Voltamos a esse ponto em Cap. 4.9 (supply chain) e Cap. 7.4 (depreciação).
🤝 A2A (Agent2Agent)¶
A2A é um protocolo aberto, originalmente proposto pelo Google em 2024 e hoje mantido como projeto sob a Linux Foundation (a2a-protocol.org), para interoperabilidade entre agentes. Onde MCP padroniza a fronteira agente↔tool/recurso, A2A padroniza a fronteira agente↔agente.
Conceitos principais:
- Agent Card. Documento (JSON) com a "ficha técnica" do agente remoto: capacidades declaradas, endpoints, métodos suportados, authentication schemes, modos de execução (síncrono, streaming, push). Análogo conceitual ao
openapi.jsonpara APIs HTTP. - Task lifecycle. A2A modela trocas como tarefas (
tasks) com estados (submitted, working, input_required, completed, failed, canceled). - Mensagens e artefatos. Cada tarefa carrega mensagens (texto/JSON/arquivos) e artefatos como entregáveis estruturados.
A2A NÃO substitui:
- Autorização entre agentes (precisa OAuth/OIDC, mTLS, JWT, etc.);
- Identidade de agente (cada agente continua precisando de identidade forte);
- Threat modeling, audit log, runtime, evals e HITL;
- Versionamento e governança das capabilities declaradas no Agent Card.
Maturidade. A2A é protocolo emergente. Em 2024–2026 ainda há evolução de spec, SDK e capacidades; trate como tecnologia em consolidação, com a mesma postura cautelosa do MCP. Adote em produção com janelas de migração explícitas, controles fora do protocolo e testes de regressão a cada release da spec.
Diferenças práticas vs MCP:
| Eixo | MCP | A2A |
|---|---|---|
| Fronteira | Agente ↔ tool/recurso | Agente ↔ agente |
| Unidade primária | Tool/resource/prompt | Task com mensagens e artefatos |
| Descoberta | Capabilities do server | Agent Card |
| Estado de execução | Implícito no client | Estados de task explícitos |
| Maturidade | Mais consolidada | Em consolidação |
🔧 Versionamento e lifecycle de tools¶
tool.crm.search_customer@1.4.0
mcp.crm-server@2.1.0
schema.create_ticket@3.0.0
- Compatíveis: novo campo opcional, descrição melhorada, timeout dentro do limite.
- Incompatíveis: renomear campo, remover campo, mudar enum, alterar autorização ou efeito colateral.
🚨 Riscos de expor ferramentas demais¶
- Seleção errada.
- Aumento de tokens.
- Prompt injection indireta.
- Exfiltração.
- Permissões amplas.
- Latência.
- Execução acidental.
- Regressões.
Mitigação: lazy loading - expor tools apenas após classificação de intenção e risco.
🧰 Exemplos práticos relacionados (planejados)¶
EX-AGT-01- agente simples com function calling.EX-AGT-02- tool registry com versionamento.EX-AGT-03- MCP server mínimo e versionado.
📚 Referências¶
- OpenAI - Function calling: https://developers.openai.com/api/docs/guides/function-calling
- Anthropic - Tool use: https://docs.anthropic.com/en/docs/build-with-claude/tool-use
- Model Context Protocol: https://modelcontextprotocol.io/docs/learn/architecture
- MCP - Security best practices: https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices