6 modèles JSON prêts à copier · A2A v1.0

Exemples d'A2A Agent Card

Parcourez des modèles pratiques A2A v1.0, comprenez leurs choix de conception, puis adaptez n'importe quel exemple pour votre propre agent.

Découverte publique d'agents

Utilisez ces exemples pour façonner le JSON qu'un autre client A2A récupère avant de décider si votre agent peut accomplir une tâche.

Soumission à un marketplace

Adaptez le fournisseur, les skills, les tags, les capabilities, et les métadonnées de sécurité afin que les relecteurs comprennent ce que fait l'agent et qui l'exploite.

Catalogues d'agents internes

Standardisez l'endpoint, l'authentification, et les descriptions de skills des agents internes avant que les équipes ne les intègrent dans des flux de travail.

Modèles JSON

Exemples d'Agent Cards pour des agents de support, réservation, shopping, codage, recherche, et flux de travail.

Valider un modèle
Filtrer

Agent de Support Client

Traite les questions sur les produits, les recherches de commandes, les retours, et les transferts d'escalade.

Pourquoi c'est construit ainsi

  • Les identifiants client OAuth 2.0 protègent les données de commande : la Agent Card déclare l'URL du token et le scope afin que les clients puissent s'authentifier sans documentation hors bande.
  • streaming et pushNotifications sont tous deux true car les conversations de support sont de longue durée et les mises à jour de résolution arrivent de manière asynchrone.
  • La skill unique est limitée à une seule limite de tâche (classer, résoudre, escalader) plutôt qu'une description vague d'"aider les clients", afin que les routeurs puissent la faire correspondre précisément.
customer-support.json
{
  "name": "Agent de Support Client",
  "description": "Répond aux questions du support client, récupère le contexte de la commande et transmet les problèmes non résolus à une équipe humaine.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Résoudre la demande de support client",
      "description": "Classifie une demande d'assistance client, rassemble le contexte nécessaire, propose une résolution et escalade lorsque la confiance est faible.",
      "tags": [
        "support",
        "orders",
        "returns"
      ],
      "examples": [
        "Aidez-moi à retourner ma commande."
      ]
    }
  ],
  "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"
      ]
    }
  ]
}

Agent de Réservation

Trouve des créneaux de rendez-vous disponibles et prépare des confirmations de réservation.

Pourquoi c'est construit ainsi

  • Une clé API dans un en-tête suffit ici : les réservations sont limitées au locataire mais ne portent pas le problème de consentement d'utilisateur délégué que résout OAuth.
  • defaultOutputModes est uniquement application/json, signalant que les appelants obtiennent des propositions de réservation structurées plutôt que de la prose.
  • pushNotifications est true afin que l'agent puisse confirmer une réservation après que le backend de rétention du créneau se soit stabilisé, sans que le client n'ait à faire du polling.
booking.json
{
  "name": "Agent de Réservation",
  "description": "Recherche la disponibilité, propose des options de réservation et prépare les réservations de rendez-vous pour approbation.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Rechercher et préparer une réservation",
      "description": "Vérifie la disponibilité des ressources, compare les fenêtres de réservation et renvoie une proposition de réservation structurée.",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "Trouvez un rendez-vous de 30 minutes demain après-midi."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Agent de Shopping

Compare les produits, la disponibilité, les prix, et les contraintes d'achat.

Pourquoi c'est construit ainsi

  • Les recommandations classées arrivent en streaming au fur et à mesure de leur calcul, donc streaming est true tandis que pushNotifications reste false — rien ne se passe après que la réponse soit complète.
  • La description de la skill s'engage à renvoyer des compromis et justifications, ce qui indique aux orchestrateurs que cet agent explique les classements plutôt que de simplement lister des produits.
  • Les scopes OAuth contrôlent les données liées à l'achat ; une démo publique de shopping pourrait supprimer entièrement la sécurité et rester une Agent Card valide.
shopping.json
{
  "name": "Agent de Shopping",
  "description": "Compare les produits aux contraintes des utilisateurs et renvoie les options d'achat classées avec des compromis.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Comparez les options d'achat",
      "description": "Évalue les produits candidats, filtre par contraintes et renvoie des recommandations classées et justifiées.",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "Comparez les ordinateurs portables légers à moins de 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"
      ]
    }
  ]
}

Agent de Codage

Révise des tâches de code, propose des correctifs, et explique les décisions d'implémentation.

Pourquoi c'est construit ainsi

  • extendedAgentCard est true : la Agent Card publique liste une skill générique "implémenter un changement de code", tandis que les skills spécifiques au dépôt ne sont révélées qu'aux clients authentifiés via GetExtendedAgentCard.
  • Les sorties text/plain et application/json sont toutes deux déclarées car l'agent renvoie des explications lisibles par l'homme accompagnées de correctifs applicables par machine.
  • Le streaming importe pour les longues boucles de compilation et de test ; les clients voient une progression intermédiaire au lieu d'un appel silencieux de plusieurs minutes.
coding.json
{
  "name": "Agent de Codage",
  "description": "Participe aux tâches d'ingénierie logicielle en analysant le code, en proposant des modifications et en renvoyant des notes de mise en œuvre.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Implémenter le changement de code",
      "description": "Lit une demande de codage, inspecte les fichiers pertinents, renvoie une proposition de correctif et résume les étapes de vérification.",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "Ajoutez une pagination à l'API des utilisateurs."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Agent de Recherche

Collecte des sources, extrait des preuves, et renvoie des notes de recherche structurées.

Pourquoi c'est construit ainsi

  • Aucun securitySchemes du tout : l'endpoint est intentionnellement public, et omettre le champ est la bonne façon de l'indiquer — une carte de schémas vide serait ambiguë.
  • L'entrée est uniquement text/plain, car les briefs de recherche partent de questions en langage naturel ; la sortie structurée arrive sous forme de notes application/json.
  • C'est la Agent Card v1.0 minimale utile : identité, une interface, capabilities, modes, et une skill bien étiquetée.
research.json
{
  "name": "Agent de Recherche",
  "description": "Recueille des documents sources, extrait des preuves et produit des notes de recherche structurées avec des citations.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Préparer un mémoire de recherche",
      "description": "Recherche des sources approuvées, extrait des affirmations et des preuves et renvoie un mémoire de recherche concis.",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "Préparer un mémoire cité sur la politique des énergies renouvelables."
      ]
    }
  ]
}

Agent de Flux de Travail Interne

Coordonne les approbations, les vérifications de statut, et les mises à jour de flux de travail du back-office.

Pourquoi c'est construit ainsi

  • application/json est le seul mode d'entrée et de sortie : cet agent est appelé par d'autres systèmes, jamais par des personnes saisissant de la prose.
  • OAuth 2.0 combiné à extendedAgentCard convient aux audits d'entreprise — les équipes de sécurité peuvent voir les exigences d'authentification publiquement tandis que les skills sensibles de flux de travail restent derrière l'authentification.
  • pushNotifications est essentiel car les chaînes d'approbation prennent des heures ou des jours ; les webhooks remplacent le polling pour les changements d'état.
internal-workflow.json
{
  "name": "Agent de Flux de Travail Interne",
  "description": "Coordonne les approbations internes, vérifie l'état du système et prépare les mises à jour des flux de travail pour les équipes opérationnelles.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Exemple 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": "Coordonner le flux de travail interne",
      "description": "Reçoit l'intention du flux de travail, vérifie les exigences de la politique, rassemble les approbations et signale le statut final.",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "Demander l'approbation pour déployer la mise à jour de la paie."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Adaptez en toute confiance

Comment adapter un exemple d'Agent Card

Chaque exemple d'Agent Card est intentionnellement assez complet pour être copié, mais la Agent Card ne devrait pas être publiée sans modification. Traitez-la comme une carte des champs pour votre propre serveur A2A : remplacez l'identité, l'endpoint, le fournisseur, l'authentification, les capabilities, les modes, et les détails des skills par des valeurs de production.

Les Agent Cards les plus solides expliquent la limite de la tâche de l'agent à la fois en langage simple et en métadonnées lisibles par machine. Un client devrait pouvoir déterminer ce que l'agent peut faire, ce qu'il ne peut pas faire, quelle URL appeler, et si des identifiants sont requis.

Avant de publier

Remplacez chaque URL example.com par votre endpoint A2A déployé et le site web du fournisseur.

Réécrivez le nom de la skill, la description, les tags (requis en v1.0), et les exemples pour la limite de tâche réelle.

Définissez provider.organization et incrémentez la version de premier niveau chaque fois que le contenu de la Agent Card change.

Supprimez les champs d'authentification uniquement lorsque l'endpoint est intentionnellement public.

Gardez defaultInputModes et defaultOutputModes alignés avec ce que votre serveur accepte et renvoie réellement.

Validez le JSON final et publiez-le sur /.well-known/agent-card.json sur le domaine de votre service.

Prêt à construire

Commencez avec un exemple, puis faites-en le vôtre.

Ouvrez n'importe quel modèle dans le Générateur d'Agent Card, révisez le JSON, et validez-le avant de publier.