Lorsque vous enregistrez manuellement des agents ou des serveurs MCP (Model Context Protocol) dans Agent Registry en créant une ressource Service, vous fournissez des fichiers de configuration JSON qui déclarent leurs fonctionnalités. Le registre d'agents valide ces fichiers par rapport aux spécifications Open Source avant de les indexer, afin que les consommateurs puissent découvrir les compétences A2A et les outils MCP de l'agent. Utilisez les structures et exemples JSON suivants pour mettre en forme vos fiches d'agent et vos spécifications d'outils MCP.
Schéma de la fiche d'agent
Lorsque vous enregistrez un agent compatible A2A, votre charge utile agent-card.json doit respecter la spécification Agent2Agent (A2A) officielle.
La taille maximale du fichier de spécification est de 10 Ko.
Les champs de tableau skills sont compatibles avec l'index de recherche par mot clé.
Agent Registry est compatible avec les versions 1.0 et 0.3 de la carte d'agent A2A. Sélectionnez une version pour afficher son schéma JSON et ses définitions de champs :
Version 1.0 (recommandée)
Pour la version 1.0 des fiches d'agent A2A, la charge utile doit respecter la spécification v1.0 officielle d'A2A. Dans cette spécification, vous déclarez des points de terminaison de transport dans un tableau supportedInterfaces :
{
"name": "string",
"description": "string",
"version": "string",
"supportedInterfaces": [
{
"url": "string",
"protocolBinding": "string",
"protocolVersion": "string",
"tenant": "string"
}
],
"capabilities": {
"streaming": false,
"pushNotifications": false,
"extendedAgentCard": false
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain"
],
"skills": [
{
"id": "string",
"name": "string",
"description": "string",
"tags": [
"string"
],
"examples": [
"string"
]
}
]
}
Définition des champs
name: nom lisible par l'humain de l'agent.description: résumé général de l'objectif de l'agent.version: version de l'agent, par exemple1.0.0.supportedInterfaces: tableau des combinaisons de transport et d'URL compatibles. Chaque interface contient les éléments suivants :url: URL du point de terminaison où cette interface est accessible.protocolBinding: liaison de protocole compatible avec cette URL, par exempleHTTP+JSON,JSONRPCouGRPC.protocolVersion: version du protocole A2A exposée par cette interface, par exemple1.0.0.tenant(facultatif) : identifiant du propriétaire de l'agent.
capabilities(facultatif) : spécifie les fonctionnalités opérationnelles compatibles, telles que les suivantes :extensions(facultatif) : tableau d'extensions de protocole.streaming(facultatif) : valeur booléenne indiquant si l'agent accepte les réponses en streaming.pushNotifications(facultatif) : valeur booléenne indiquant si les notifications push sont acceptées pour les mises à jour de tâches.extendedAgentCard(facultatif) : valeur booléenne indiquant si l'agent fournit une carte d'agent étendue lorsqu'il est authentifié.
defaultInputModes(facultatif) : tableau de types MIME acceptés en entrée.defaultOutputModes(facultatif) : tableau de types MIME produits en sortie.skills: tableau des compétences A2A descriptives de l'agent :id: identifiant programmatique unique de la compétence A2A.name: nom lisible par l'humain de la compétence A2A.description: explication détaillée de ce que fait la compétence A2A.tags: tableau de chaînes de mots clés utilisées pour catégoriser la compétence A2A.examples: tableau d'exemples de requêtes ou de scénarios gérés par cette compétence A2A.
Version 0.3
Pour la version 0.3 des fiches d'agent A2A, la charge utile doit respecter la spécification v0.3.0. Dans cette spécification, l'URL d'inférence principale et la version du protocole sont déclarées en tant que champs de premier niveau :
{
"name": "string",
"description": "string",
"version": "string",
"protocolVersion": "string",
"url": "string",
"skills": [
{
"id": "string",
"name": "string",
"description": "string",
"tags": [
"string"
],
"examples": [
"string"
]
}
],
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false
},
"defaultInputModes": [
"text/plain"
],
"defaultOutputModes": [
"text/plain"
]
}
Définition des champs
name: nom lisible par l'humain de l'agent.description: résumé général de l'objectif de l'agent.version: version de l'agent, par exemple1.0.2.protocolVersion: version du protocole A2A implémentée par l'agent. Étant donné que la version1.0abandonne ce champ de premier niveau, la valeur doit être0.3ou n'importe quelle version de correctif0.3, telle que0.3.1, pour ce schéma.url: URL du point de terminaison où l'agent est accessible.capabilities(facultatif) : objet spécifiant les capacités opérationnelles de l'agent, telles questreaming,pushNotificationsoustateTransitionHistory.defaultInputModes(facultatif) : tableau de chaînes définissant les types MIME par défaut que l'agent accepte en entrée, par exemple["text/plain"].defaultOutputModes(facultatif) : tableau de chaînes définissant les types MIME par défaut que l'agent produit en sortie, par exemple["text/plain"].skills: tableau des compétences A2A descriptives de l'agent :id: identifiant programmatique unique de la compétence A2A.name: nom lisible par l'humain de la compétence A2A.description: explication détaillée de ce que fait la compétence A2A.tags: tableau de chaînes de mots clés utilisées pour catégoriser la compétence A2A.examples: tableau d'exemples de requêtes ou de scénarios gérés par cette compétence A2A.
Schéma de l'outil MCP
Lors de l'enregistrement d'un serveur MCP, votre charge utile toolspec.json doit inclure une liste d'outils conformes au schéma d'objet MCP Tool.
La charge utile attendue est un objet JSON avec un seul champ tools, exactement comme il est renvoyé par les outils MCP standards ou la requête de liste.
La taille maximale de ce fichier de spécification est de 10 Ko.
{
"tools": [
{
"name": "string",
"description": "string",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "string",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
}
}
]
}
Définition des champs
tools: tableau d'outils fournis par le serveur :name: identifiant programmatique de l'outil.description: explication lisible par l'humain de l'objectif de l'outil.inputSchema: objet de schéma JSON définissant les paramètres attendus pour l'outil.annotations: indices comportementaux qui guident la façon dont les agents d'orchestration interagissent avec l'outil :title: titre de l'outil, lisible par l'humain.readOnlyHint: si la valeur esttrue, l'outil ne récupère que les données et ne modifie pas son environnement. La valeur par défaut estfalse.destructiveHint: si la valeur esttrue, l'outil effectue des opérations susceptibles d'entraîner des modifications permanentes. La valeur par défaut esttrue.idempotentHint: si la valeur esttrue, l'appel répété de l'outil n'a aucun effet supplémentaire. La valeur par défaut estfalse.openWorldHint: si la valeur esttrue, l'outil interagit avec des systèmes externes. La valeur par défaut esttrue.