{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "A2A Protocol Schemas", "description": "Non-normative JSON Schema bundle extracted from proto definitions.", "version": "v1", "definitions": { "Struct": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Struct", "type": "object" }, "Timestamp": { "$schema": "https://json-schema.org/draft/2020-12/schema", "format": "date-time", "title": "Timestamp", "type": "string" }, "Value": { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Value" }, "API Key Security Scheme": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Defines a security scheme using an API key.", "properties": { "description": { "default": "", "description": "An optional description for the security scheme.", "type": "string" }, "location": { "default": "", "description": "The location of the API key. Valid values are \"query\", \"header\", or \"cookie\".", "type": "string" }, "name": { "default": "", "description": "The name of the header, query, or cookie parameter to be used.", "type": "string" } }, "title": "API Key Security Scheme", "type": "object" }, "Agent Capabilities": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Defines optional capabilities supported by an agent.", "properties": { "extendedAgentCard": { "description": "Indicates if the agent supports providing an extended agent card when authenticated.", "type": "boolean" }, "extensions": { "description": "A list of protocol extensions supported by the agent.", "items": { "$ref": "lf.a2a.v1.AgentExtension.jsonschema.json" }, "type": "array" }, "pushNotifications": { "description": "Indicates if the agent supports sending push notifications for asynchronous task updates.", "type": "boolean" }, "streaming": { "description": "Indicates if the agent supports streaming responses.", "type": "boolean" } }, "title": "Agent Capabilities", "type": "object" }, "Agent Card": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "A self-describing manifest for an agent. It provides essential metadata including the agent's identity, capabilities, skills, supported communication methods, and security requirements.", "properties": { "capabilities": { "$ref": "lf.a2a.v1.AgentCapabilities.jsonschema.json", "description": "A2A Capability set supported by the agent." }, "defaultInputModes": { "description": "The set of interaction modes that the agent supports across all skills. Defined as media types.", "items": { "type": "string" }, "type": "array" }, "defaultOutputModes": { "description": "The media types supported as outputs from this agent.", "items": { "type": "string" }, "type": "array" }, "description": { "default": "", "description": "A human-readable description of the agent.", "type": "string" }, "documentationUrl": { "description": "A URL providing additional documentation about the agent.", "type": "string" }, "iconUrl": { "description": "Optional. A URL to an icon for the agent.", "type": "string" }, "name": { "default": "", "description": "A human readable name for the agent.", "type": "string" }, "provider": { "$ref": "lf.a2a.v1.AgentProvider.jsonschema.json", "description": "The service provider of the agent." }, "securityRequirements": { "description": "Security requirements for contacting the agent.", "items": { "$ref": "lf.a2a.v1.SecurityRequirement.jsonschema.json" }, "type": "array" }, "securitySchemes": { "additionalProperties": { "$ref": "lf.a2a.v1.SecurityScheme.jsonschema.json" }, "description": "The security scheme details used for authenticating with this agent.", "type": "object" }, "signatures": { "description": "JSON Web Signatures computed for this AgentCard.", "items": { "$ref": "lf.a2a.v1.AgentCardSignature.jsonschema.json" }, "type": "array" }, "skills": { "description": "Skills represent the abilities of an agent.", "items": { "$ref": "lf.a2a.v1.AgentSkill.jsonschema.json" }, "type": "array" }, "supportedInterfaces": { "description": "Ordered list of supported interfaces. The first entry is preferred.", "items": { "$ref": "lf.a2a.v1.AgentInterface.jsonschema.json" }, "type": "array" }, "version": { "default": "", "description": "The version of the agent.", "type": "string" } }, "title": "Agent Card", "type": "object" }, "Agent Interface": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Declares a combination of a target URL, transport and protocol version for interacting with the agent.", "properties": { "protocolBinding": { "default": "", "description": "The protocol binding supported at this URL. Core ones: JSONRPC, GRPC, HTTP+JSON.", "type": "string" }, "protocolVersion": { "default": "", "description": "The version of the A2A protocol this interface exposes. Examples: \"0.3\", \"1.0\"", "type": "string" }, "tenant": { "default": "", "description": "Tenant ID to be used in the request when calling the agent.", "type": "string" }, "url": { "default": "", "description": "The URL where this interface is available.", "type": "string" } }, "title": "Agent Interface", "type": "object" }, "Agent Provider": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Represents the service provider of an agent.", "properties": { "organization": { "default": "", "description": "The name of the agent provider's organization.", "type": "string" }, "url": { "default": "", "description": "A URL for the agent provider's website or relevant documentation.", "type": "string" } }, "title": "Agent Provider", "type": "object" }, "Agent Skill": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Represents a distinct capability or function that an agent can perform.", "properties": { "description": { "default": "", "description": "A detailed description of the skill.", "type": "string" }, "examples": { "description": "Example prompts or scenarios that this skill can handle.", "items": { "type": "string" }, "type": "array" }, "id": { "default": "", "description": "A unique identifier for the agent's skill.", "type": "string" }, "inputModes": { "description": "The set of supported input media types for this skill.", "items": { "type": "string" }, "type": "array" }, "name": { "default": "", "description": "A human-readable name for the skill.", "type": "string" }, "outputModes": { "description": "The set of supported output media types for this skill.", "items": { "type": "string" }, "type": "array" }, "tags": { "description": "A set of keywords describing the skill's capabilities.", "items": { "type": "string" }, "type": "array" } }, "title": "Agent Skill", "type": "object" }, "Artifact": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Artifacts represent task outputs.", "properties": { "artifactId": { "default": "", "description": "Unique identifier (e.g. UUID) for the artifact. It must be unique within a task.", "type": "string" }, "description": { "default": "", "description": "Optional. A human readable description of the artifact.", "type": "string" }, "extensions": { "description": "The URIs of extensions that are present or contributed to this Artifact.", "items": { "type": "string" }, "type": "array" }, "name": { "default": "", "description": "A human readable name for the artifact.", "type": "string" }, "parts": { "description": "The content of the artifact. Must contain at least one part.", "items": { "$ref": "lf.a2a.v1.Part.jsonschema.json" }, "type": "array" } }, "title": "Artifact", "type": "object" }, "Message": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Message is one unit of communication between client and server. It can be associated with a context and/or a task.", "properties": { "contextId": { "default": "", "description": "Optional. The context id of the message.", "type": "string" }, "extensions": { "description": "The URIs of extensions that are present or contributed to this Message.", "items": { "type": "string" }, "type": "array" }, "messageId": { "default": "", "description": "The unique identifier (e.g. UUID) of the message.", "type": "string" }, "parts": { "description": "Parts is the container of the message content.", "items": { "$ref": "lf.a2a.v1.Part.jsonschema.json" }, "type": "array" }, "referenceTaskIds": { "description": "A list of task IDs that this message references for additional context.", "items": { "type": "string" }, "type": "array" }, "role": { "anyOf": [ { "pattern": "^ROLE_UNSPECIFIED$", "type": "string" }, { "enum": ["ROLE_USER", "ROLE_AGENT"], "type": "string" }, { "maximum": 2147483647, "minimum": -2147483648, "type": "integer" } ], "default": 0, "description": "Identifies the sender of the message.", "title": "Role" }, "taskId": { "default": "", "description": "Optional. The task id of the message.", "type": "string" } }, "title": "Message", "type": "object" }, "Part": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Part represents a container for a section of communication content. Parts can be purely textual, some sort of file (image, video, etc) or a structured data blob (i.e. JSON).", "properties": { "filename": { "default": "", "description": "An optional filename for the file (e.g., \"document.pdf\").", "type": "string" }, "mediaType": { "default": "", "description": "The media_type (MIME type) of the part content (e.g., \"text/plain\", \"application/json\", \"image/png\").", "type": "string" }, "raw": { "description": "The raw byte content of a file. In JSON serialization, this is encoded as a base64 string.", "pattern": "^[A-Za-z0-9+/]*={0,2}$", "type": "string" }, "text": { "description": "The string content of the text part.", "type": "string" }, "url": { "description": "A url pointing to the file's content.", "type": "string" } }, "title": "Part", "type": "object" }, "Task": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Task is the core unit of action for A2A. It has a current status and when results are created for the task they are stored in the artifact.", "properties": { "artifacts": { "description": "A set of output artifacts for a Task.", "items": { "$ref": "lf.a2a.v1.Artifact.jsonschema.json" }, "type": "array" }, "contextId": { "default": "", "description": "Unique identifier (e.g. UUID) for the contextual collection of interactions.", "type": "string" }, "history": { "description": "The history of interactions from a Task.", "items": { "$ref": "lf.a2a.v1.Message.jsonschema.json" }, "type": "array" }, "id": { "default": "", "description": "Unique identifier (e.g. UUID) for the task, generated by the server for a new task.", "type": "string" }, "status": { "$ref": "lf.a2a.v1.TaskStatus.jsonschema.json", "description": "The current status of a Task, including state and a message." } }, "title": "Task", "type": "object" }, "Task Status": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "A container for the status of a task", "properties": { "message": { "$ref": "lf.a2a.v1.Message.jsonschema.json", "description": "A message associated with the status." }, "state": { "anyOf": [ { "pattern": "^TASK_STATE_UNSPECIFIED$", "type": "string" }, { "enum": ["TASK_STATE_SUBMITTED", "TASK_STATE_WORKING", "TASK_STATE_COMPLETED", "TASK_STATE_FAILED", "TASK_STATE_CANCELED", "TASK_STATE_INPUT_REQUIRED", "TASK_STATE_REJECTED", "TASK_STATE_AUTH_REQUIRED"], "type": "string" }, { "maximum": 2147483647, "minimum": -2147483648, "type": "integer" } ], "default": 0, "description": "The current state of this task.", "title": "Task State" }, "timestamp": { "description": "ISO 8601 Timestamp when the status was recorded.", "format": "date-time", "type": "string" } }, "title": "Task Status", "type": "object" }, "Send Message Request": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Represents a request for the SendMessage method.", "properties": { "configuration": { "$ref": "lf.a2a.v1.SendMessageConfiguration.jsonschema.json", "description": "Configuration for the send request." }, "message": { "$ref": "lf.a2a.v1.Message.jsonschema.json", "description": "The message to send to the agent." }, "tenant": { "default": "", "description": "Optional. Tenant ID, provided as a path parameter.", "type": "string" } }, "title": "Send Message Request", "type": "object" }, "Send Message Response": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Represents the response for the SendMessage method.", "properties": { "message": { "$ref": "lf.a2a.v1.Message.jsonschema.json", "description": "A message from the agent." }, "task": { "$ref": "lf.a2a.v1.Task.jsonschema.json", "description": "The task created or updated by the message." } }, "title": "Send Message Response", "type": "object" }, "Security Requirement": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Defines the security requirements for an agent.", "properties": { "schemes": { "additionalProperties": { "$ref": "lf.a2a.v1.StringList.jsonschema.json" }, "description": "A map of security schemes to the required scopes.", "type": "object" } }, "title": "Security Requirement", "type": "object" }, "Security Scheme": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "description": "Defines a security scheme that can be used to secure an agent's endpoints. Based on OpenAPI 3.2 Security Scheme Object.", "properties": { "apiKeySecurityScheme": { "$ref": "lf.a2a.v1.APIKeySecurityScheme.jsonschema.json", "description": "API key-based authentication." }, "httpAuthSecurityScheme": { "$ref": "lf.a2a.v1.HTTPAuthSecurityScheme.jsonschema.json", "description": "HTTP authentication (Basic, Bearer, etc.)." }, "mtlsSecurityScheme": { "$ref": "lf.a2a.v1.MutualTlsSecurityScheme.jsonschema.json", "description": "Mutual TLS authentication." }, "oauth2SecurityScheme": { "$ref": "lf.a2a.v1.OAuth2SecurityScheme.jsonschema.json", "description": "OAuth 2.0 authentication." }, "openIdConnectSecurityScheme": { "$ref": "lf.a2a.v1.OpenIdConnectSecurityScheme.jsonschema.json", "description": "OpenID Connect authentication." } }, "title": "Security Scheme", "type": "object" } }, "_source": "https://a2a-protocol.org/latest/spec/a2a.json", "_retrieved": "2026-06-07", "_note": "Condensed from official A2A Protocol JSON Schema bundle v1" }