Esquemas de JSON

Cuando registras de forma explícita agentes o servidores del Protocolo de contexto del modelo (MCP) con el Registro de agentes mediante las APIs de Services, debes proporcionar archivos de configuración que describan sus capacidades.

El Registro de agentes valida los archivos subidos con especificaciones externas de código abierto antes de indexarlos para descubrir las habilidades y las herramientas del agente.

En este documento, se proporcionan ejemplos y vínculos a las estructuras JSON esperadas para las tarjetas de agente y las especificaciones de herramientas de MCP.

Esquema de la tarjeta de agente

Cuando registres un agente compatible con A2A, la 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 del array skills admiten el índice de búsqueda de palabras clave.

El Registro de agentes admite las versiones 0.3 y 1.0 de la tarjeta de agente A2A .

Esquema de la versión 1.0 (recomendado)

Para la versión 1.0 de las tarjetas de agente A2A, la carga útil debe cumplir con la especificación oficial de A2A v1.0. 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 (versión 1.0)

  • name: Es el nombre del agente en lenguaje natural.
  • description: Es un resumen de alto nivel del propósito del agente.
  • version: Es la versión del agente, por ejemplo, 1.0.0.
  • supportedInterfaces: Es 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: Es opcional. Es el identificador del propietario del agente.
  • capabilities: Es opcional. Especifica las capacidades operativas admitidas, como las siguientes:
    • extensions: Es opcional. Es un array de extensiones de protocolo.
    • streaming: Es opcional. Es un valor booleano que indica si el agente admite respuestas de transmisión.
    • pushNotifications: Es opcional. Es un valor booleano que indica si se admiten notificaciones push para las actualizaciones de tareas.
    • extendedAgentCard: Es opcional. Es un valor booleano que indica si el agente proporciona una tarjeta de agente extendida cuando se autentica.
  • defaultInputModes: Es opcional. Es un array de tipos de MIME aceptados como entrada.
  • defaultOutputModes: Es opcional. Es un array de tipos de MIME producidos como salida.
  • skills: Es un array de capacidades que posee el agente:
    • id: Es un identificador programático único para la habilidad.
    • name: Es un nombre legible para la habilidad.
    • description: Es una explicación detallada de lo que hace la habilidad.
    • tags: Es un array de cadenas de palabras clave que se usan para categorizar la habilidad.
    • examples: Es un array de ejemplos de mensajes o situaciones.

Esquema de la 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 (versión 0.3)

  • name: Es el nombre del agente en lenguaje natural.
  • description: Es un resumen de alto nivel del propósito del agente.
  • version: Es 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 da de baja 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: Es opcional. Especifica las capacidades operativas admitidas, como streaming, pushNotifications o stateTransitionHistory.
  • defaultInputModes: Es opcional. Es un array de tipos de MIME aceptados como entrada.
  • defaultOutputModes: Es opcional. Es un array de tipos de MIME producidos como salida.
  • skills: Es un array de capacidades que posee el agente:
    • id: Es un identificador programático único para la habilidad.
    • name: Es un nombre legible para la habilidad.
    • description: Es una explicación detallada de lo que hace la habilidad.
    • tags: Es un array de cadenas de palabras clave que se usan para categorizar la habilidad.
    • examples: Es un array de ejemplos de mensajes o situaciones.

Esquema de la herramienta de MCP

Cuando registras un servidor de MCP, la carga útil de toolspec.json debe incluir una lista de herramientas que se adhieran al esquema de objetos Tool de MCP.

La carga útil esperada es un objeto JSON con un solo campo tools, exactamente como lo muestran las herramientas de MCP estándar o la solicitud de lista. El tamaño máximo del 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 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 Orchestrator interactúan con la herramienta:

      • title: Es un título legible 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 pueden causar cambios permanentes. El valor predeterminado es true.
      • idempotentHint: Si es true, llamar a la herramienta repetidamente 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.