Pular para conteúdo

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.json para 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