Esquemas de JSON

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:

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, JSONRPC o GRPC.
    • 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ón 1.0 deja de estar disponible en este campo de nivel superior, el valor debe ser 0.3 o cualquier versión de parche 0.3, como 0.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, como streaming, pushNotifications o stateTransitionHistory.
  • 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 es true, la herramienta solo recupera datos y no modifica su entorno. El valor predeterminado es false.
      • destructiveHint: Si es true, la herramienta realiza operaciones que podrían causar cambios permanentes. El valor predeterminado es true.
      • idempotentHint: Si es true, llamar a la herramienta de forma repetida no tiene ningún efecto adicional. El valor predeterminado es false.
      • openWorldHint: Si es true, la herramienta interactúa con sistemas externos. El valor predeterminado es true.