AgentCard

代理的自描述清单。它提供必要的元数据,包括代理的身份、功能、技能、支持的通信方法和安全要求。下一个 ID:20

JSON 表示法
{
  "name": string,
  "description": string,
  "supportedInterfaces": [
    {
      object (AgentInterface)
    }
  ],
  "provider": {
    object (AgentProvider)
  },
  "version": string,
  "capabilities": {
    object (AgentCapabilities)
  },
  "securitySchemes": {
    string: {
      object (SecurityScheme)
    },
    ...
  },
  "securityRequirements": [
    {
      object (SecurityRequirement)
    }
  ],
  "defaultInputModes": [
    string
  ],
  "defaultOutputModes": [
    string
  ],
  "skills": [
    {
      object (AgentSkill)
    }
  ],
  "signatures": [
    {
      object (AgentCardSignature)
    }
  ],
  "documentationUrl": string,
  "iconUrl": string
}
字段
name

string

必需。代理的人类可读名称。示例:“食谱代理”

description

string

必需。代理的人类可读说明,可帮助用户和其他代理了解其用途。示例:“可帮助用户查找食谱和烹饪的代理。”

supportedInterfaces[]

object (AgentInterface)

必需。支持的接口的有序列表。第一个条目是首选。

provider

object (AgentProvider)

代理的服务提供商。

version

string

必需。代理的版本。示例:“1.0.0”

capabilities

object (AgentCapabilities)

必需。智能体支持的 A2A 功能集。

securitySchemes

map (key: string, value: object (SecurityScheme))

用于向此代理进行身份验证的安全方案详细信息。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

securityRequirements[]

object (SecurityRequirement)

联系代理的安全要求。

defaultInputModes[]

string

必需。protolint:enable REPEATED_FIELD_NAMES_PLURALIZED 代理在所有技能中支持的一组互动模式。此设置可按技能进行替换。定义为媒体类型。

defaultOutputModes[]

string

必需。此代理支持作为输出的媒体类型。

skills[]

object (AgentSkill)

必需。技能表示智能体的能力。这在很大程度上是一个描述性概念,但代表了代理可能成功完成的一组更集中的行为。

signatures[]

object (AgentCardSignature)

为相应 AgentCard 计算的 JSON Web 签名。

documentationUrl

string

提供有关代理的其他文档的网址。

iconUrl

string

可选。指向智能体图标的网址。

AgentInterface

声明了与代理交互的目标网址、传输和协议版本。这样,代理就可以通过多种协议绑定机制公开相同的功能。

JSON 表示法
{
  "url": string,
  "protocolBinding": string,
  "tenant": string,
  "protocolVersion": string
}
字段
url

string

必需。相应接口可用的网址。在正式版中,必须是有效的绝对 HTTPS 网址。示例:“https://api.example.com/a2a/v1”“https://grpc.example.com/a2a”

protocolBinding

string

必需。相应网址支持的协议绑定。这是一个开放形式的字符串,可以轻松扩展以用于其他协议绑定。官方支持的核心模型包括 JSONRPCGRPCHTTP+JSON

tenant

string

可选。一种不透明的字符串,用于在单个 A2A 端点后提供多个代理时,将请求路由到特定代理或租户。如果设置了此值,客户端必须将其包含在发送到此接口的所有请求消息的 tenant 字段中。服务器负责解读该值并相应地路由请求;该协议未定义其格式或语义。

protocolVersion

string

必需。相应接口公开的 A2A protocol 版本。使用每个主要版本的最新受支持的次要版本。示例:“0.3”“1.0”

AgentProvider

表示代理的服务提供商。

JSON 表示法
{
  "url": string,
  "organization": string
}
字段
url

string

必需。代理提供商的网站或相关文档的网址。示例:“https://ai.google.dev”

organization

string

必需。代理提供方的组织名称。示例:“Google”

AgentCapabilities

定义代理支持的可选功能。

JSON 表示法
{
  "extensions": [
    {
      object (AgentExtension)
    }
  ],
  "streaming": boolean,
  "pushNotifications": boolean,
  "extendedAgentCard": boolean
}
字段
extensions[]

object (AgentExtension)

代理支持的协议扩展程序列表。

streaming

boolean

指示代理是否支持流式响应。

pushNotifications

boolean

指示代理是否支持针对异步任务更新发送推送通知。

extendedAgentCard

boolean

指示代理在经过身份验证后是否支持提供扩展代理卡片。

AgentExtension

代理支持的协议扩展的声明。

JSON 表示法
{
  "uri": string,
  "description": string,
  "required": boolean,
  "params": {
    object
  }
}
字段
uri

string

用于标识扩展程序的唯一 URI。

description

string

此代理如何使用扩展程序的人类可读说明。

required

boolean

如果为 true,客户端必须了解并遵守扩展程序的要求。

params

object (Struct format)

可选。特定于扩展程序的配置参数。

SecurityScheme

定义可用于保护代理端点的安全方案。这是基于 OpenAPI 3.2 安全架构对象的区分联合类型。请参阅:https://spec.openapis.org/oas/v3.2.0.html#security-scheme-object

JSON 表示法
{

  // Union field scheme can be only one of the following:
  "apiKeySecurityScheme": {
    object (APIKeySecurityScheme)
  },
  "httpAuthSecurityScheme": {
    object (HTTPAuthSecurityScheme)
  },
  "oauth2SecurityScheme": {
    object (OAuth2SecurityScheme)
  },
  "openIdConnectSecurityScheme": {
    object (OpenIdConnectSecurityScheme)
  },
  "mtlsSecurityScheme": {
    object (MutualTlsSecurityScheme)
  }
  // End of list of possible types for union field scheme.
}
字段

联合字段 scheme

scheme 只能是下列其中一项:

apiKeySecurityScheme

object (APIKeySecurityScheme)

基于 API 密钥的身份验证。

httpAuthSecurityScheme

object (HTTPAuthSecurityScheme)

HTTP 身份验证(基本、不记名等)。

oauth2SecurityScheme

object (OAuth2SecurityScheme)

OAuth 2.0 身份验证。

openIdConnectSecurityScheme

object (OpenIdConnectSecurityScheme)

OpenID Connect 身份验证。

mtlsSecurityScheme

object (MutualTlsSecurityScheme)

双向 TLS 身份验证。

APIKeySecurityScheme

使用 API 密钥定义安全方案。

JSON 表示法
{
  "description": string,
  "location": string,
  "name": string
}
字段
description

string

安全方案的可选说明。

location

string

必需。API 密钥的位置。有效值为“query”“header”或“cookie”。

name

string

必需。要使用的标头、查询或 Cookie 参数的名称。

HTTPAuthSecurityScheme

使用 HTTP 身份验证定义安全方案。

JSON 表示法
{
  "description": string,
  "scheme": string,
  "bearerFormat": string
}
字段
description

string

安全方案的可选说明。

scheme

string

必需。要在授权标头中使用的 HTTP 身份验证方案的名称,如 RFC7235 中所定义(例如,“Bearer”)。此值应在 IANA 身份验证方案注册表中注册。

bearerFormat

string

向客户端提供的提示,用于标识不记名令牌的格式(例如“JWT”)。主要用于文档记录。

OAuth2SecurityScheme

使用 OAuth 2.0 定义安全机制。

JSON 表示法
{
  "description": string,
  "flows": {
    object (OAuthFlows)
  },
  "oauth2MetadataUrl": string
}
字段
description

string

安全方案的可选说明。

flows

object (OAuthFlows)

必需。一个对象,包含受支持的 OAuth 2.0 流程的配置信息。

oauth2MetadataUrl

string

指向 OAuth2 授权服务器元数据的网址 RFC 8414。必须使用 TLS。

OAuthFlows

定义受支持的 OAuth 2.0 流程的配置。

JSON 表示法
{

  // Union field flow can be only one of the following:
  "authorizationCode": {
    object (AuthorizationCodeOAuthFlow)
  },
  "clientCredentials": {
    object (ClientCredentialsOAuthFlow)
  },
  "implicit": {
    object (ImplicitOAuthFlow)
  },
  "password": {
    object (PasswordOAuthFlow)
  },
  "deviceCode": {
    object (DeviceCodeOAuthFlow)
  }
  // End of list of possible types for union field flow.
}
字段

联合字段 flow

flow 只能是下列其中一项:

authorizationCode

object (AuthorizationCodeOAuthFlow)

OAuth 授权代码流程的配置。

clientCredentials

object (ClientCredentialsOAuthFlow)

OAuth 客户端凭据流程的配置。

implicit
(deprecated)

object (ImplicitOAuthFlow)

已弃用:请改用授权代码 + PKCE。

password
(deprecated)

object (PasswordOAuthFlow)

已弃用:请改用授权代码 + PKCE 或设备代码。

deviceCode

object (DeviceCodeOAuthFlow)

OAuth 设备代码流程的配置。

AuthorizationCodeOAuthFlow

定义 OAuth 2.0 授权代码流程的配置详细信息。

JSON 表示法
{
  "authorizationUrl": string,
  "tokenUrl": string,
  "refreshUrl": string,
  "scopes": {
    string: string,
    ...
  },
  "pkceRequired": boolean
}
字段
authorizationUrl

string

必需。要用于此流程的授权网址。

tokenUrl

string

必需。要用于此流程的令牌网址。

refreshUrl

string

用于获取刷新令牌的网址。

scopes

map (key: string, value: string)

必需。OAuth2 安全方案的可用范围。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

pkceRequired

boolean

指明此流程是否需要 PKCE (RFC 7636)。对于公共客户端,应始终使用 PKCE;对于所有客户端,建议使用 PKCE。

ClientCredentialsOAuthFlow

定义 OAuth 2.0 客户端凭证流的配置详细信息。

JSON 表示法
{
  "tokenUrl": string,
  "refreshUrl": string,
  "scopes": {
    string: string,
    ...
  }
}
字段
tokenUrl

string

必需。要用于此流程的令牌网址。

refreshUrl

string

用于获取刷新令牌的网址。

scopes

map (key: string, value: string)

必需。OAuth2 安全方案的可用范围。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

ImplicitOAuthFlow

已弃用:请改用授权代码 + PKCE。

JSON 表示法
{
  "authorizationUrl": string,
  "refreshUrl": string,
  "scopes": {
    string: string,
    ...
  }
}
字段
authorizationUrl

string

要用于此流程的授权网址。必须采用网址形式。OAuth2 标准要求使用 TLS

refreshUrl

string

用于获取刷新令牌的网址。必须采用网址形式。OAuth2 标准要求使用 TLS。

scopes

map (key: string, value: string)

OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

PasswordOAuthFlow

已弃用:请改用授权代码 + PKCE 或设备代码。

JSON 表示法
{
  "tokenUrl": string,
  "refreshUrl": string,
  "scopes": {
    string: string,
    ...
  }
}
字段
tokenUrl

string

要用于此流程的令牌网址。必须采用网址形式。OAuth2 标准要求使用 TLS。

refreshUrl

string

用于获取刷新令牌的网址。必须采用网址形式。OAuth2 标准要求使用 TLS。

scopes

map (key: string, value: string)

OAuth2 安全方案的可用范围。范围名称与相应简短说明之间的映射。该映射可能为空。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

DeviceCodeOAuthFlow

定义 OAuth 2.0 设备代码流程 (RFC 8628) 的配置详细信息。此流程专为输入受限的设备(例如 IoT 设备)和用户在单独设备上进行身份验证的 CLI 工具而设计。

JSON 表示法
{
  "deviceAuthorizationUrl": string,
  "tokenUrl": string,
  "refreshUrl": string,
  "scopes": {
    string: string,
    ...
  }
}
字段
deviceAuthorizationUrl

string

必需。设备授权端点网址。

tokenUrl

string

必需。要用于此流程的令牌网址。

refreshUrl

string

用于获取刷新令牌的网址。

scopes

map (key: string, value: string)

必需。OAuth2 安全方案的可用范围。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

OpenIdConnectSecurityScheme

使用 OpenID Connect 定义安全方案。

JSON 表示法
{
  "description": string,
  "openIdConnectUrl": string
}
字段
description

string

安全方案的可选说明。

openIdConnectUrl

string

必需。OIDC 提供商元数据的 OpenID Connect 发现网址

MutualTlsSecurityScheme

定义使用 mTLS 身份验证的安全方案。

JSON 表示法
{
  "description": string
}
字段
description

string

安全方案的可选说明。

SecurityRequirement

定义代理的安全要求。

JSON 表示法
{
  "schemes": {
    string: {
      object (StringList)
    },
    ...
  }
}
字段
schemes

map (key: string, value: object (StringList))

安全方案与所需范围的对应关系。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

StringList

protolint:disable REPEATED_FIELD_NAMES_PLURALIZED 字符串列表。

JSON 表示法
{
  "list": [
    string
  ]
}
字段
list[]

string

各个字符串值。

AgentSkill

表示代理可以执行的独特功能或函数。

JSON 表示法
{
  "id": string,
  "name": string,
  "description": string,
  "tags": [
    string
  ],
  "examples": [
    string
  ],
  "inputModes": [
    string
  ],
  "outputModes": [
    string
  ],
  "securityRequirements": [
    {
      object (SecurityRequirement)
    }
  ]
}
字段
id

string

必需。代理技能的唯一标识符。

name

string

必需。技能的人类可读名称。

description

string

必需。技能的详细说明。

tags[]

string

必需。一组描述技能功能的关键字。

examples[]

string

此技能可处理的提示或场景示例。

inputModes[]

string

相应技能支持的输入媒体类型集,用于替换代理的默认设置。

outputModes[]

string

相应技能支持的一组输出媒体类型,用于替换代理的默认设置。

securityRequirements[]

object (SecurityRequirement)

此技能所需的安全方案。

AgentCardSignature

AgentCardSignature 表示 AgentCard 的 JWS 签名。此参数遵循 RFC 7515 JSON Web Signature (JWS) 的 JSON 格式。

JSON 表示法
{
  "protected": string,
  "signature": string,
  "header": {
    object
  }
}
字段
protected

string

必需。必需。签名的受保护 JWS 标头。这始终是一个 base64url 编码的 JSON 对象。

signature

string

必需。计算出的签名,采用 base64url 编码。

header

object (Struct format)

未受保护的 JWS 标头值。