Esquemas JSON

Ao registrar explicitamente agentes ou servidores de Protocolo de Contexto de Modelo (MCP) com o Agent Registry usando as APIs Services, você precisa fornecer arquivos de configuração que descrevam os recursos deles.

O Agent Registry valida os arquivos enviados em relação a especificações externas de código aberto antes de indexá-los para descobrir habilidades A2A e ferramentas de agente.

Este documento fornece exemplos e links para as estruturas JSON esperadas para cards de agente e especificações de ferramentas do MCP.

Esquema de card do agente

Ao registrar um agente compatível com A2A, o payload agent-card.json precisa seguir a especificação oficial do Agent2Agent (A2A). O tamanho máximo do arquivo de especificação é de 10 KB. Os campos da matriz skills oferecem suporte ao índice de pesquisa de palavras-chave.

O Agent Registry oferece suporte às versões 0.3 e 1.0 do A2A Agent Card.

Esquema da versão 1.0 (recomendado)

Para a versão 1.0 dos cards de agente A2A, o payload precisa seguir a especificação oficial do A2A v1.0. Nessa especificação, você declara endpoints de transporte em uma matriz 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"
      ]
    }
  ]
}

Definições de campo (versão 1.0)

  • name: o nome legível do agente.
  • description: um resumo de alto nível da finalidade do agente.
  • version: a versão do agente, por exemplo, 1.0.0.
  • supportedInterfaces: uma matriz de combinações de transporte e URL com suporte. Cada interface contém o seguinte:
    • url: o URL do endpoint em que essa interface é acessada.
    • protocolBinding: a vinculação de protocolo com suporte nesse URL, por exemplo, HTTP+JSON, JSONRPC ou GRPC.
    • protocolVersion: a versão do protocolo A2A que essa interface expõe, por exemplo, 1.0.0.
    • tenant: opcional. O identificador do proprietário do agente.
  • capabilities: opcional. Especifica recursos operacionais com suporte, como:
    • extensions: opcional. Uma matriz de extensões de protocolo.
    • streaming: opcional. Um booleano que indica se o agente oferece suporte a respostas de streaming.
    • pushNotifications: opcional. Um booleano que indica se as notificações push são aceitas para atualizações de tarefas.
    • extendedAgentCard: opcional. Um booleano que indica se o agente fornece um card de agente estendido quando autenticado.
  • defaultInputModes: opcional. Uma matriz de tipos MIME aceitos como entrada.
  • defaultOutputModes: opcional. Uma matriz de tipos MIME produzidos como saída.
  • skills: uma matriz de recursos que o agente possui:
    • id: um identificador programático exclusivo para a habilidade.
    • name: um nome legível para a habilidade.
    • description: uma explicação detalhada do que a habilidade faz.
    • tags: uma matriz de strings de palavras-chave usadas para categorizar a habilidade.
    • examples: uma matriz de exemplos de comandos ou cenários.

Esquema da versão 0.3

Para a versão 0.3 dos cards de agente A2A, o payload precisa seguir a especificação v0.3.0. Nessa especificação, o URL de inferência principal e a versão do protocolo são declarados como campos de nível 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"
  ]
}

Definições de campo (versão 0.3)

  • name: o nome legível do agente.
  • description: um resumo de alto nível da finalidade do agente.
  • version: a versão do agente, por exemplo, 1.0.2.
  • protocolVersion: a versão do protocolo A2A que o agente implementa. Como a versão 1.0 descontinua esse campo de nível superior, o valor precisa ser 0.3 ou qualquer versão de patch 0.3, como 0.3.1, para esse esquema.
  • url: o URL do endpoint em que o agente pode ser acessado.
  • capabilities: opcional. Um objeto que especifica os recursos operacionais com suporte do agente, como streaming, pushNotifications ou stateTransitionHistory.
  • defaultInputModes: opcional. Uma matriz de strings que definem os tipos MIME padrão que o agente aceita como entrada, por exemplo, ["text/plain"].
  • defaultOutputModes: opcional. Uma matriz de strings que definem os tipos MIME padrão que o agente produz como saída, por exemplo, ["text/plain"].
  • skills: uma matriz de habilidades A2A descritivas que o agente possui:

    • id: um identificador programático exclusivo para a habilidade A2A.
    • name: um nome legível para a habilidade A2A.
    • description: uma explicação detalhada do que a habilidade A2A faz.
    • tags: uma matriz de strings de palavras-chave usadas para categorizar a habilidade A2A.
    • examples: uma matriz de exemplos de comandos ou cenários que essa habilidade A2A processa.

Esquema de ferramenta do MCP

Ao registrar um servidor MCP, o payload toolspec.json precisa incluir uma lista de ferramentas que aderem ao esquema de objeto Tool do MCP.

O payload esperado é um objeto JSON com um único tools campo, exatamente como ele é retornado por as ferramentas padrão do MCP ou solicitação de lista. O tamanho máximo do arquivo de especificação é de 10 KB.

{
  "tools": [
    {
      "name": "string",
      "description": "string",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "annotations": {
        "title": "string",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true
      }
    }
  ]
}

Definições de campo

  • tools: uma matriz de ferramentas fornecidas pelo servidor:

    • name: o identificador programático da ferramenta.
    • description: uma explicação legível da finalidade da ferramenta.
    • inputSchema: um objeto de esquema JSON que define os parâmetros esperados para a ferramenta.
    • annotations: dicas de comportamento que orientam como os agentes do orquestrador interagem com a ferramenta:

      • title: um título legível para a ferramenta.
      • readOnlyHint: se for true, a ferramenta só recupera dados e não modifica o ambiente. O padrão é false.
      • destructiveHint: se for true, a ferramenta realiza operações que podem causar mudanças permanentes. O padrão é true.
      • idempotentHint: se for true, chamar a ferramenta repetidamente não terá efeito adicional. O padrão é false.
      • openWorldHint: se for true, a ferramenta interage com sistemas externos. O padrão é true.