A2A: lascia che gli agenti AI chiamino il tuo sito
Pubblicato:
Un agente AI ha appena validato questo sito senza aprire un browser, cliccare un pulsante o fare scraping di una pagina — ha letto un piccolo file JSON, inviato una richiesta tipizzata e ricevuto un risultato strutturato. Questo scambio è A2A, e qualsiasi sito web può offrirlo.
Cos'è A2A
A2A (Agent2Agent) è un protocollo aperto — ora sotto la Linux Foundation — che consente agli agenti AI di scoprirsi e chiamarsi a vicenda tramite HTTP standard. Pensatelo come la controparte agente-a-agente di una API pubblica: invece di un essere umano che legge la documentazione e scrive un'integrazione, un altro agente legge una descrizione machine-readable di ciò che fa il tuo servizio e lo chiama direttamente.
Ha due parti: un documento di discovery (l'agent card) e un endpoint richiamabile (la skill).
1. L'agent card — il discovery
Pubblichi un file JSON in /.well-known/agent-card.json che descrive chi sei e cosa puoi fare. I campi obbligatori sono name, description, version, url (il tuo endpoint A2A) e almeno una 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. L'endpoint — una skill richiamabile
L'url della card punta a un endpoint JSON-RPC 2.0. Un agente chiama il metodo message/send con un messaggio; tu esegui il lavoro e restituisci un Task. Ecco una chiamata reale al nostro agente:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…e la risposta — un task completato con un riepilogo leggibile dall'uomo e dati strutturati:
{ "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 } } } }
] }] } }
Nessun browser, nessun parsing HTML — l'agente ottiene esattamente i dati che ha richiesto.
A2A vs WebMCP vs MCP
- A2A — agenti in rete che chiamano il tuo servizio tramite HTTP (orchestratori, altri agenti). Questa pagina.
- WebMCP — un agente in esecuzione dentro il browser che chiama strumenti sulla tua pagina aperta.
- MCP — connette strumenti a un singolo modello o app, di solito in locale.
Sono complementari: A2A raggiunge gli agenti in rete, WebMCP raggiunge quelli nel browser. Scopri come i tre si integrano tra loro.
Come qualsiasi sito può aggiungerne uno
Non hai bisogno dell'intero protocollo per iniziare — scegli una cosa reale che il tuo servizio fa:
- Pubblica una agent card valida in
/.well-known/agent-card.jsoncon una skill. - Implementa il metodo sincrono
message/sendche racchiude quella capacità e restituisce unTaskcompletato con il risultato come artifact. - Streaming, cronologia dei task e notifiche push sono opzionali — imposta
capabilities.streamingsu false e aggiungili solo quando ne hai bisogno.
L'unica regola: supporta la card con un endpoint reale
La card è un contratto, non un meta tag. Se pubblichi una card il cui url non risponde effettivamente a message/send, ogni agente che si fida di essa incontra un vicolo cieco. Esponi A2A solo per le capacità che puoi davvero servire — è così che abbiamo costruito la nostra, ed è per questo che il nostro report contrassegna il segnale come presente solo quando un endpoint funzionante lo supporta. Vuoi vederlo dal vivo? Recupera la nostra agent card.