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