When you explicitly register agents or Model Context Protocol (MCP) servers with Agent Registry using the Services APIs, you must provide configuration files that describe their capabilities.
Agent Registry validates your uploaded files against external, open source specifications before indexing them to discover agent skills and tools.
This document provides examples and links to the expected JSON structures for Agent Cards and MCP tool specifications.
Agent Card schema
When registering an A2A-compliant agent, your agent-card.json payload must
adhere to the official
Agent2Agent (A2A) specification.
The maximum file size for the specification file is 10 KB.
The skills array fields support the keyword search index.
Agent Registry supports versions 0.3 and 1.0 of the A2A
Agent Card.
Version 1.0 schema (recommended)
For version 1.0 of A2A Agent Cards, the payload must adhere to the official A2A
v1.0 specification. In this specification, you declare transport
endpoints within a supportedInterfaces array.
{
"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"
]
}
]
}
Field definitions (Version 1.0)
name: The human-readable name of the agent.description: A high-level summary of the agent's purpose.version: The version of the agent, for example,1.0.0.supportedInterfaces: An array of supported transport and URL combinations. Each interface contains the following:url: The endpoint URL where this interface is reached.protocolBinding: The protocol binding supported at this URL, for example,HTTP+JSON,JSONRPC, orGRPC.protocolVersion: The A2A protocol version this interface exposes, for example,1.0.0.tenant: Optional. The identifier of the agent owner.
capabilities: Optional. Specifies supported operational capabilities such as the following:extensions: Optional. An array of protocol extensions.streaming: Optional. A boolean indicating if the agent supports streaming responses.pushNotifications: Optional. A boolean indicating if push notifications are supported for task updates.extendedAgentCard: Optional. A boolean indicating if the agent provides an extended Agent Card when authenticated.
defaultInputModes: Optional. An array of MIME types accepted as input.defaultOutputModes: Optional. An array of MIME types produced as output.skills: An array of capabilities the agent possesses:id: A unique programmatic identifier for the skill.name: A human-readable name for the skill.description: A detailed explanation of what the skill does.tags: An array of keyword strings used to categorize the skill.examples: An array of example prompts or scenarios.
Version 0.3 schema
For version 0.3 of A2A Agent Cards, the payload must adhere to the
v0.3.0 specification. In this specification, the primary
inference URL and protocol version are declared as top-level fields.
{
"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"
]
}
Field definitions (Version 0.3)
name: The human-readable name of the agent.description: A high-level summary of the agent's purpose.version: The version of the agent, for example,1.0.2.protocolVersion: The version of the A2A protocol the agent implements. Because version 1.0 deprecates this top-level field, the value must be0.3or any0.3patch version, such as0.3.1, for this schema.url: The endpoint URL where the agent can be reached.capabilities: Optional. Specifies supported operational capabilities, such asstreaming,pushNotifications, orstateTransitionHistory.defaultInputModes: Optional. An array of MIME types accepted as input.defaultOutputModes: Optional. An array of MIME types produced as output.skills: An array of capabilities the agent possesses:id: A unique programmatic identifier for the skill.name: A human-readable name for the skill.description: A detailed explanation of what the skill does.tags: An array of keyword strings used to categorize the skill.examples: An array of example prompts or scenarios.
MCP tool schema
When registering an MCP server, your toolspec.json payload must include a list
of tools that adhere to the
MCP Tool object schema.
The expected payload is a JSON object with a single tools field, exactly as it
is returned by
the standard MCP tools or list request.
The maximum file size for this specification file is 10 KB.
{
"tools": [
{
"name": "string",
"description": "string",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"title": "string",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
}
}
]
}
Field definitions
tools: An array of tools provided by the server:name: The programmatic identifier for the tool.description: A human-readable explanation of the tool's purpose.inputSchema: A JSON Schema object defining the expected parameters for the tool.annotations: Behavioral hints that guide how orchestrator agents interact with the tool:title: A human-readable title for the tool.readOnlyHint: Iftrue, the tool only retrieves data and doesn't modify its environment. Default isfalse.destructiveHint: Iftrue, the tool performs operations that might cause permanent changes. Default istrue.idempotentHint: Iftrue, calling the tool repeatedly has no additional effect. Default isfalse.openWorldHint: Iftrue, the tool interacts with external systems. Default istrue.