Cuando registras manualmente agentes o servidores del Protocolo de contexto del modelo (MCP) en
Agent Registry creando un recurso Service, proporcionas archivos de configuración
JSON que declaran sus capacidades. El registro de agentes valida
estos archivos con las especificaciones de código abierto antes de indexarlos para que
los consumidores puedan descubrir las habilidades de A2A y las herramientas de MCP
del agente. Usa las siguientes estructuras y ejemplos de JSON para dar formato a tus especificaciones de Agent Cards y herramientas de MCP.
Esquema de la tarjeta de agente
Cuando registres un agente compatible con A2A, tu carga útil de agent-card.json debe
cumplir con la
especificación oficial de Agent2Agent (A2A).
El tamaño máximo del archivo de especificación es de 10 KB.
Los campos de array skills admiten el índice de búsqueda de palabras clave.
El registro de agentes admite las versiones 1.0 y 0.3 de la tarjeta de agente de A2A. Selecciona una
versión para ver su esquema JSON y las definiciones de los campos:
Versión 1.0 (recomendada)
Para la versión 1.0 de las tarjetas de agente A2A, la carga útil debe cumplir con la
especificación v1.0 oficial de A2A. En esta especificación, declaras
los extremos de transporte dentro de un array 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"
]
}
]
}
Definiciones de campos
name: Es el nombre legible por humanos del agente.description: un resumen de alto nivel del propósito del agente.version: la versión del agente, por ejemplo,1.0.0.supportedInterfaces: un array de combinaciones de transporte y URL admitidas. Cada interfaz contiene lo siguiente:url: Es la URL del extremo en la que se alcanza esta interfaz.protocolBinding: Es la vinculación de protocolo admitida en esta URL, por ejemplo,HTTP+JSON,JSONRPCoGRPC.protocolVersion: Es la versión del protocolo A2A que expone esta interfaz, por ejemplo,1.0.0.tenant(opcional): Es el identificador del propietario del agente.
capabilities(opcional): Especifica las capacidades operativas compatibles, como las siguientes:extensions(opcional): Es un array de extensiones de protocolo.streaming(opcional): Es un valor booleano que indica si el agente admite respuestas de transmisión.pushNotifications(opcional): Es un valor booleano que indica si se admiten las notificaciones push para las actualizaciones de tareas.extendedAgentCard(opcional): Es un valor booleano que indica si el agente proporciona una tarjeta de agente extendida cuando se autentica.
defaultInputModes(opcional): Es un array de tipos de MIME que se aceptan como entrada.defaultOutputModes(opcional): Es un array de tipos de MIME que se producen como salida.skills: Es un array de habilidades descriptivas de A2A que posee el agente:id: Es un identificador programático único para la skill de A2A.name: Es un nombre legible por humanos para la habilidad de A2A.description: Es una explicación detallada de lo que hace la habilidad de A2A.tags: Es un array de cadenas de palabras clave que se usan para categorizar la skill de A2A.examples: un array de instrucciones o situaciones de ejemplo que controla esta habilidad de A2A.
Versión 0.3
Para la versión 0.3 de las tarjetas de agente A2A, la carga útil debe cumplir con la
especificación v0.3.0. En esta especificación, la URL de inferencia principal y la versión del protocolo se declaran como campos de nivel superior:
{
"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"
]
}
Definiciones de campos
name: Es el nombre legible por humanos del agente.description: un resumen de alto nivel del propósito del agente.version: la versión del agente, por ejemplo,1.0.2.protocolVersion: Es la versión del protocolo A2A que implementa el agente. Debido a que la versión1.0deja de estar disponible en este campo de nivel superior, el valor debe ser0.3o cualquier versión de parche0.3, como0.3.1, para este esquema.url: Es la URL del extremo en la que se puede acceder al agente.capabilities(opcional): Es un objeto que especifica las capacidades operativas admitidas del agente, comostreaming,pushNotificationsostateTransitionHistory.defaultInputModes(opcional): Es un array de cadenas que define los tipos de MIME predeterminados que el agente acepta como entrada, por ejemplo,["text/plain"].defaultOutputModes(opcional): Es un array de cadenas que define los tipos de MIME predeterminados que produce el agente como resultado, por ejemplo,["text/plain"].skills: Es un array de habilidades descriptivas de A2A que posee el agente:id: Es un identificador programático único para la skill de A2A.name: Es un nombre legible por humanos para la habilidad de A2A.description: Es una explicación detallada de lo que hace la habilidad de A2A.tags: Es un array de cadenas de palabras clave que se usan para categorizar la skill de A2A.examples: un array de instrucciones o situaciones de ejemplo que controla esta habilidad de A2A.
Esquema de la herramienta de MCP
Cuando registras un servidor de MCP, tu carga útil de toolspec.json debe incluir una lista
de herramientas que se adhieran al
esquema de objetos de Tool de MCP.
La carga útil esperada es un objeto JSON con un solo campo tools, exactamente como lo
devuelven
las herramientas de MCP estándar o la solicitud de lista.
El tamaño máximo de este archivo de especificación es de 10 KB.
{
"tools": [
{
"name": "string",
"description": "string",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "string",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
}
}
]
}
Definiciones de campos
tools: Es un array de herramientas que proporciona el servidor:name: Es el identificador programático de la herramienta.description: Es una explicación legible por humanos del propósito de la herramienta.inputSchema: Es un objeto de esquema JSON que define los parámetros esperados para la herramienta.annotations: Son sugerencias de comportamiento que guían la forma en que los agentes de organización interactúan con la herramienta:title: Es un título legible por humanos para la herramienta.readOnlyHint: Si estrue, la herramienta solo recupera datos y no modifica su entorno. El valor predeterminado esfalse.destructiveHint: Si estrue, la herramienta realiza operaciones que podrían causar cambios permanentes. El valor predeterminado estrue.idempotentHint: Si estrue, llamar a la herramienta de forma repetida no tiene ningún efecto adicional. El valor predeterminado esfalse.openWorldHint: Si estrue, la herramienta interactúa con sistemas externos. El valor predeterminado estrue.