Scoperta pubblica dell'agente
Usa questi esempi per definire il JSON che un altro client A2A recupera prima di decidere se il tuo agente può completare un'attività.
6 modelli JSON pronti da copiare · A2A v1.0
Sfoglia modelli pratici A2A v1.0, comprendi le loro decisioni di design, poi adatta qualsiasi esempio per il tuo agente.
Usa questi esempi per definire il JSON che un altro client A2A recupera prima di decidere se il tuo agente può completare un'attività.
Adatta provider, skill, tag, capabilities, e metadati di sicurezza affinché i revisori capiscano cosa fa l'agente e chi lo gestisce.
Standardizza le descrizioni di endpoint, autenticazione, e skill tra gli agenti interni prima che i team li integrino nei flussi di lavoro.
Modelli JSON
Gestisce domande sui prodotti, ricerche ordini, resi, ed escalation.
Perché è costruito così
{
"name": "Agente di Supporto Clienti",
"description": "Risponde alle domande dell'assistenza clienti, recupera il contesto dell'ordine e inoltra i problemi irrisolti a un team umano.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/customer-support",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "resolve-customer-support-request",
"name": "Risolvere la richiesta di assistenza clienti",
"description": "Classifica una richiesta di assistenza clienti, raccoglie il contesto necessario, propone una soluzione e interviene quando la fiducia è bassa.",
"tags": [
"support",
"orders",
"returns"
],
"examples": [
"Aiutami a restituire il mio ordine."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}Trova slot di appuntamento disponibili e prepara conferme di prenotazione.
Perché è costruito così
{
"name": "Agente di Prenotazione",
"description": "Cerca la disponibilità, propone opzioni di prenotazione e prepara le prenotazioni degli appuntamenti per l'approvazione.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/booking",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": false,
"pushNotifications": true,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "find-and-prepare-booking",
"name": "Trova e prepara la prenotazione",
"description": "Controlla la disponibilità delle risorse, confronta le finestre di prenotazione e restituisce una proposta di prenotazione strutturata.",
"tags": [
"booking",
"calendar",
"availability"
],
"examples": [
"Trova un appuntamento di 30 minuti domani pomeriggio."
]
}
],
"securitySchemes": {
"apiKey": {
"apiKeySecurityScheme": {
"location": "header",
"name": "X-API-Key"
}
}
},
"security": [
{
"apiKey": []
}
]
}Confronta prodotti, disponibilità, prezzi, e vincoli di acquisto.
Perché è costruito così
{
"name": "Agente di Shopping",
"description": "Confronta i prodotti con i vincoli dell'utente e restituisce le opzioni di acquisto classificate con i compromessi.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/shopping",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "compare-shopping-options",
"name": "Confronta le opzioni di acquisto",
"description": "Valuta i prodotti candidati, filtra in base ai vincoli e restituisce consigli classificati con motivazione.",
"tags": [
"shopping",
"commerce",
"recommendations"
],
"examples": [
"Confronta laptop leggeri sotto i $ 1.200."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}Rivede attività di codice, propone patch, e spiega le decisioni di implementazione.
Perché è costruito così
{
"name": "Agente di Programmazione",
"description": "Assiste nelle attività di ingegneria del software analizzando il codice, proponendo modifiche e restituendo note di implementazione.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/coding",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"extendedAgentCard": true
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "implement-code-change",
"name": "Implementare la modifica del codice",
"description": "Legge una richiesta di codifica, ispeziona i file rilevanti, restituisce una proposta di patch e riepiloga i passaggi di verifica.",
"tags": [
"coding",
"review",
"patches"
],
"examples": [
"Aggiungi l'impaginazione all'API degli utenti."
]
}
],
"securitySchemes": {
"apiKey": {
"apiKeySecurityScheme": {
"location": "header",
"name": "X-API-Key"
}
}
},
"security": [
{
"apiKey": []
}
]
}Raccoglie fonti, estrae prove, e restituisce note di ricerca strutturate.
Perché è costruito così
{
"name": "Agente di Ricerca",
"description": "Raccoglie materiale originale, estrae prove e produce note di ricerca strutturate con citazioni.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/research",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "prepare-research-brief",
"name": "Preparare un brief di ricerca",
"description": "Cerca fonti approvate, estrae affermazioni e prove e restituisce un breve riepilogo della ricerca.",
"tags": [
"research",
"evidence",
"citations"
],
"examples": [
"Preparare un brief citato sulla politica delle energie rinnovabili."
]
}
]
}Coordina approvazioni, controlli di stato, e aggiornamenti del flusso di lavoro back-office.
Perché è costruito così
{
"name": "Agente di Flusso di Lavoro Interno",
"description": "Coordina le approvazioni interne, controlla lo stato del sistema e prepara gli aggiornamenti del flusso di lavoro per i team operativi.",
"supportedInterfaces": [
{
"url": "https://api.example.com/a2a/workflow",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "Esempio Inc.",
"url": "https://example.com"
},
"version": "1.0.0",
"capabilities": {
"streaming": false,
"pushNotifications": true,
"extendedAgentCard": true
},
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "coordinate-internal-workflow",
"name": "Coordinare il flusso di lavoro interno",
"description": "Riceve l'intento del flusso di lavoro, controlla i requisiti delle policy, raccoglie le approvazioni e segnala lo stato finale.",
"tags": [
"workflow",
"operations",
"approval"
],
"examples": [
"Richiedere l'approvazione per distribuire l'aggiornamento del libro paga."
]
}
],
"securitySchemes": {
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"clientCredentials": {
"tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
"scopes": {
"agent.invoke": "Invoke agent skills"
}
}
}
}
}
},
"security": [
{
"oauth2": [
"agent.invoke"
]
}
]
}Adatta con fiducia
Ogni esempio di Agent Card è intenzionalmente abbastanza completo da copiare, ma la Agent Card non dovrebbe essere pubblicata invariata. Trattala come una mappa dei campi per il tuo server A2A: sostituisci identità, endpoint, provider, autenticazione, capabilities, modalità, e dettagli delle skill con valori di produzione.
Gli Agent Card più forti spiegano il confine dell'attività dell'agente sia in linguaggio semplice che in metadati leggibili dalla macchina. Un client dovrebbe essere in grado di capire cosa può fare l'agente, cosa non può fare, quale URL chiamare, e se sono richieste credenziali.
Sostituisci ogni URL example.com con il tuo endpoint A2A distribuito e il sito web del provider.
Riscrivi il nome della skill, la descrizione, i tag (richiesti in v1.0), e gli esempi per il confine di attività effettivo.
Imposta provider.organization e incrementa la version di primo livello ogni volta che il contenuto della Agent Card cambia.
Rimuovi i campi di autenticazione solo quando l'endpoint è intenzionalmente pubblico.
Mantieni defaultInputModes e defaultOutputModes allineati con ciò che il tuo server accetta e restituisce effettivamente.
Convalida il JSON finale e pubblicalo su /.well-known/agent-card.json sul dominio del tuo servizio.
Pronto a costruire
Apri qualsiasi pattern nel Generatore di Agent Card, rivedi il JSON, e convalidalo prima di pubblicare.