JSON 架构

通过创建 Service 资源在 Agent Registry 中手动注册智能体或 Model Context Protocol (MCP) 服务器时,您需要提供声明其功能的 JSON 配置文件。智能体注册表会先根据开源规范验证这些文件,然后再将其编入索引,以便使用者能够发现智能体 A2A 技能和 MCP 工具。请使用以下 JSON 结构和示例来设置 Agent Card 和 MCP 工具规范的格式。

智能体卡片架构

注册符合 A2A 标准的代理时,您的 agent-card.json 载荷必须遵循官方 Agent2Agent (A2A) 规范。规范文件的大小上限为 10 KB。 skills 数组字段支持关键字搜索索引。

智能体注册表支持 A2A 智能体卡片的 1.0 和 0.3 版本。选择一个版本,查看其 JSON 架构和字段定义:

对于 A2A 智能体卡片的 1.0 版本,载荷必须遵循官方 A2A v1.0 规范。在此规范中,您可以在 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"
      ]
    }
  ]
}

字段定义

  • name:代理的人类可读名称。
  • description:对代理用途的简要总结。
  • version:代理的版本,例如 1.0.0。
  • supportedInterfaces:受支持的传输和网址组合的数组。每个接口都包含以下内容:
    • url:此接口可访问的端点网址。
    • protocolBinding:此网址支持的协议绑定,例如 HTTP+JSON、JSONRPC 或 GRPC。
    • protocolVersion:此接口公开的 A2A protocol 版本,例如 1.0.0。
    • tenant(可选):智能体所有者的标识符。
  • capabilities(可选):指定支持的操作功能,例如:
    • extensions(可选):协议扩展数组。
    • streaming(可选):一个布尔值,用于指示代理是否支持流式传输回答。
    • pushNotifications(可选):一个布尔值,指示是否支持针对任务更新发送推送通知。
    • extendedAgentCard(可选):一个布尔值,指示智能体在通过身份验证后是否提供扩展智能体卡片。
  • defaultInputModes(可选):可作为输入接受的 MIME 类型数组。
  • defaultOutputModes(可选):作为输出生成的 MIME 类型的数组。
  • skills:代理拥有的描述性 A2A 技能数组:
    • id:A2A 技能的唯一程序化标识符。
    • name:A2A 技能的人类可读名称。
    • description:对 A2A 技能用途的详细说明。
    • tags:用于对 A2A 技能进行分类的关键字字符串数组。
    • examples:此 A2A 技能处理的示例提示或场景的数组。

版本 0.3

对于 A2A 智能体卡片的 0.3 版本,载荷必须遵循 v0.3.0 规范。在此规范中,主要推理网址和协议版本声明为顶级字段:

{
  "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"
  ]
}

字段定义

  • name:代理的人类可读名称。
  • description:对智能体用途的简要总结。
  • version:代理的版本,例如 1.0.2。
  • protocolVersion:代理实现的 A2A protocol 版本。由于版本 1.0 弃用了此顶级字段,因此对于此架构,该值必须为 0.3 或任何 0.3 补丁版本(例如 0.3.1)。
  • url:可访问代理的端点网址。
  • capabilities(可选):一个对象,用于指定代理支持的操作功能,例如 streaming、pushNotifications 或 stateTransitionHistory。
  • defaultInputModes(可选):一个字符串数组,用于定义智能体接受的默认 MIME 类型,例如 ["text/plain"]。
  • defaultOutputModes(可选):一个字符串数组,用于定义智能体作为输出生成的默认 MIME 类型,例如 ["text/plain"]。
  • skills:代理拥有的描述性 A2A 技能数组:
    • id:A2A 技能的唯一程序化标识符。
    • name:A2A 技能的人类可读名称。
    • description:对 A2A 技能用途的详细说明。
    • tags:用于对 A2A 技能进行分类的关键字字符串数组。
    • examples:此 A2A 技能处理的示例提示或场景的数组。

MCP 工具架构

注册 MCP 服务器时,您的 toolspec.json 载荷必须包含符合 MCP Tool 对象架构的工具列表。

预期载荷是一个包含单个 tools 字段的 JSON 对象,与标准 MCP 工具或列表请求返回的载荷完全相同。此规范文件的文件大小上限为 10 KB。

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

字段定义

  • tools:服务器提供的工具数组:

    • name:工具的程序化标识符。
    • description:对工具用途的人类可读说明。
    • inputSchema:一个 JSON 架构对象,用于定义工具的预期参数。
    • annotations:指导编排器智能体如何与工具交互的行为提示:

      • title:工具的人类可读标题。
      • readOnlyHint:如果为 true,则该工具仅检索数据,不会修改其环境。默认值为 false。
      • destructiveHint:如果为 true,则该工具会执行可能导致永久性更改的操作。默认值为 true。
      • idempotentHint:如果为 true,则重复调用该工具不会产生额外效果。默认值为 false。
      • openWorldHint:如果为 true,则该工具会与外部系统交互。默认值为 true。