What is the A2A (Agent2Agent) protocol?

Build agents
HoneyHive Engineering

A2A is an open standard that lets independent AI agents discover each other and work on tasks over HTTP, without sharing their internals.

The Agent2Agent (A2A) protocol is an open standard for communication between AI agents. It gives agents built on different frameworks or by different vendors a common way to find each other and hand over work (What is A2A). It builds on HTTP, JSON-RPC and Server-Sent Events (SSE), and agents collaborate “without exposing their internal logic, memory, or proprietary tools”. Google created it and launched it in April 2025, and the Linux Foundation announced on 23 June 2025 that it would host the project as a vendor-neutral nonprofit (press release).

For the protocol that connects an agent to tools instead, see the Model Context Protocol.

How A2A works

The key concepts page names three actors. The user is a person or automated service that starts a request. The A2A client is an application, service or another agent acting for the user. The A2A server, also called the remote agent, exposes an HTTP endpoint and is opaque to the client.

The specification (section 2.2) defines the core objects:

Object What it is
Agent Card A JSON metadata document published by an A2A server: identity, endpoint, capabilities, skills and authentication requirements
Task “The fundamental unit of work managed by A2A”, stateful and with a lifecycle
Message “A communication turn between a client and a remote agent”, with a role and one or more Parts
Part “The smallest unit of content within a Message or Artifact”: text, a file reference or structured data
Artifact An output produced by a task, made of Parts

A server answers a request with either a Message, for an immediate reply, or a new Task, for longer work. For progress on a task, the client can poll, stream over SSE, or register a webhook for push notifications (key concepts). The server-generated contextId groups related tasks across a series of interactions.

Discovery with the Agent Card

The spec (section 8.2) lists three ways for a client to find a card: the well-known URI https://{server_domain}/.well-known/agent-card.json, curated registries or catalogs, and direct configuration with a known URL or content (specification). Cards can optionally be signed with JSON Web Signature (section 8.4, same page).

The task lifecycle

Task states are defined in section 4.1.3 of the specification, where each name carries a TASK_STATE_ prefix:

Group States
Working SUBMITTED, WORKING
Interrupted INPUT_REQUIRED (the agent needs more input from the user), AUTH_REQUIRED
Terminal COMPLETED, FAILED, CANCELED, REJECTED

The interrupted states are what let an agent pause and ask a question mid-task, then continue. A stream either carries a single Message and closes, or begins with the Task and closes when the task reaches a terminal state (specification, section 3.1.2). Push notifications are server-initiated HTTP POST requests to a client-provided webhook, and need the agent’s pushNotifications capability.

Operations and bindings

The spec defines the same operations over three protocol bindings: JSON-RPC, gRPC and HTTP+JSON/REST. Custom bindings are allowed if they meet the same functional-equivalence requirements (specification, sections 5.1 and 9 to 12).

Operation JSON-RPC method HTTP+JSON endpoint
Send a message SendMessage POST /message:send
Send and stream updates SendStreamingMessage POST /message:stream
Get a task GetTask GET /tasks/{id}
List, cancel, subscribe to tasks ListTasks, CancelTask, SubscribeToTask see spec section 5.3
Manage push notification configs CreateTaskPushNotificationConfig and three others see spec section 5.3
Fetch the authenticated extended card GetExtendedAgentCard GET /extendedAgentCard

Clients must send an A2A-Version header with each request, and a server that does not support the requested version must return a VersionNotSupportedError (specification, section 3.6). As of 31 October 2026 the latest released version is 1.0.0 (specification); check the spec for the current release before building.

A2A vs MCP

The A2A docs call the two protocols complementary. They say “MCP is vertical. It deepens a single agent” and “A2A is horizontal. It connects agents across that boundary” (A2A and MCP).

MCP A2A
Connects An agent to tools and resources An agent to another, independent agent
Counterpart Typically stateless, with structured inputs and outputs Autonomous, keeps state over longer multi-turn interactions
Stated by the docs as “more about agents using capabilities” “about agents partnering on tasks”

Both rows come from the same A2A and MCP page, which is written by the A2A project. It adds that a well-defined, stateless A2A skill can sometimes be exposed as an MCP-compatible resource. A common pairing is A2A between agents and MCP inside each agent.

When to use A2A

This is a rule of thumb, not part of the spec.

Situation Reasonable choice Why
An agent needs a database, file or API MCP server or plain function tool The counterpart is a capability, not an agent
A task may run long, pause for input or stream progress A2A Tasks, INPUT_REQUIRED and streaming are built in
The other agent is owned by another team or vendor and must stay opaque A2A Opaque execution is a stated design principle
Several agents live in one codebase and one framework The framework’s own handoffs No cross-vendor boundary to bridge; see agentic workflows

For the wider picture of how agents are built, see what are AI agents and how to build AI agents.

Tracing multi-agent systems in HoneyHive

HoneyHive’s docs do not list an A2A-specific guide as of 31 October 2026 (docs index). The multi-agent tracing and evaluation tutorial shows a multi-agent customer support bot built with Google ADK, with tracing and evaluations added. To follow a request across several agents, see how to trace AI agents and agent observability.

FAQ

What is the difference between A2A and MCP?

The A2A docs put it as "A2A is about agents partnering on tasks; MCP is more about agents using capabilities" (A2A and MCP). MCP connects an agent to its tools and data. A2A connects one agent to another agent.

Who created A2A and who runs it now?

Google created it and launched it in April 2025. The Linux Foundation announced it would host the project on 23 June 2025 as a vendor-neutral home (press release).

Does A2A replace MCP?

No. The A2A docs describe the two as complementary, with A2A connecting agents to each other and MCP connecting each agent to its own tools (A2A and MCP).

Share