A2A: deixe agentes de IA chamar o seu site
Publicado:
Um agente de IA acabou de validar este site sem abrir um navegador, clicar em um botão ou fazer scraping de página — ele leu um pequeno arquivo JSON, enviou uma requisição tipada e recebeu um resultado estruturado de volta. Essa troca é o A2A, e qualquer site pode oferecê-la.
O que é A2A
A2A (Agent2Agent) é um protocolo aberto — agora sob a Linux Foundation — que permite que agentes de IA se descubram e se chamem mutuamente via HTTP simples. Pense nele como o equivalente agente-a-agente de uma API pública: em vez de um humano ler sua documentação e escrever uma integração, outro agente lê uma descrição legível por máquina do que seu serviço faz e o chama diretamente.
Ele tem duas partes: um documento de descoberta (o agent card) e um endpoint chamável (a skill).
1. O agent card — descoberta
Você publica um arquivo JSON em /.well-known/agent-card.json descrevendo quem você é e o que você pode fazer. Os campos obrigatórios são name, description, version, url (seu endpoint A2A) e pelo menos uma skill:
{
"protocolVersion": "0.3.0",
"name": "llms.txt Validator",
"description": "Validate a website's llms.txt and return a score with findings.",
"url": "https://llms-txt-validator.dev/a2a",
"skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt",
"description": "Given a domain or URL, fetch and validate its llms.txt." }]
}
2. O endpoint — uma skill chamável
O url do card aponta para um endpoint JSON-RPC 2.0. Um agente chama o método message/send com uma mensagem; você executa o trabalho e retorna uma Task. Aqui está uma chamada real ao nosso agente:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…e a resposta — uma task concluída contendo um resumo legível por humanos e dados estruturados:
{ "result": { "kind": "task", "status": { "state": "completed" },
"artifacts": [{ "parts": [
{ "kind": "text", "text": "Validated llmstxt.org: score 100/100..." },
{ "kind": "data", "data": { "ok": true, "report": { "scores": { "overall": 100 } } } }
] }] } }
Sem navegador, sem parsing de HTML — o agente recebe exatamente os dados que pediu.
A2A vs WebMCP vs MCP
- A2A — agentes em rede chamando seu serviço via HTTP (orquestradores, outros agentes). Esta página.
- WebMCP — um agente rodando dentro do navegador chamando ferramentas na sua página aberta.
- MCP — conectando ferramentas a um único modelo ou aplicativo, geralmente localmente.
Eles são complementares: A2A alcança agentes em rede, WebMCP alcança os que estão no navegador. Veja como os três se encaixam.
Como qualquer site pode adicionar um
Você não precisa de todo o protocolo para começar — escolha uma coisa real que seu serviço faz:
- Sirva um agent card válido em
/.well-known/agent-card.jsoncom uma skill. - Implemente o método síncrono
message/sendencapsulando essa capacidade, e retorne umaTaskconcluída com o resultado como artefato. - Streaming, histórico de tasks e notificações push são opcionais — defina
capabilities.streamingcomo false e adicione-os somente quando precisar.
A única regra: sustente o card com um endpoint real
O card é um contrato, não uma meta tag. Se você publicar um card cujo url não responde de fato ao message/send, todo agente que confiar nele encontrará um beco sem saída. Exponha A2A apenas para capacidades que você realmente pode servir — foi assim que construímos o nosso, e é por isso que nosso próprio relatório marca o sinal como presente somente quando um endpoint funcional o sustenta. Quer ver ao vivo? Acesse nosso agent card.