An open protocol enabling communication and interoperability between opaque agentic applications.
An open protocol enabling communication and interoperability between opaque agentic applications.
One of the biggest challenges in enterprise AI adoption is getting agents built on different frameworks and vendors to work together. That’s why we created an open Agent2Agent (A2A) protocol, a collaborative way to help agents across different ecosystems communicate with each other. Google is driving this open protocol initiative for the industry because we believe this protocol will be critical to support multi-agent communication by giving your agents a common language – irrespective of the framework or vendor they are built on.
With A2A, agents can show each other their capabilities and negotiate how they will interact with users (via text, forms, or bidirectional audio/video) – all while working securely together.
Watch this demo video to see how A2A enables seamless communication between different agent frameworks.
The Agent2Agent (A2A) protocol facilitates communication between independent AI agents. Here are the core concepts:
/.well-known/agent.json
) describing an agent’s capabilities, skills, endpoint URL, and authentication requirements. Clients use this for discovery.tasks/send
) to an A2A Server’s URL.tasks/send
or tasks/sendSubscribe
). Tasks have unique IDs and progress through states (submitted
, working
, input-required
, completed
, failed
, canceled
).role: "user"
) and the agent (role: "agent"
). Messages contain Parts
.Message
or Artifact
. Can be TextPart
, FilePart
(with inline bytes or a URI), or DataPart
(for structured JSON, e.g., forms).Parts
.streaming
capability can use tasks/sendSubscribe
. The client receives Server-Sent Events (SSE) containing TaskStatusUpdateEvent
or TaskArtifactUpdateEvent
messages, providing real-time progress.pushNotifications
can proactively send task updates to a client-provided webhook URL, configured via tasks/pushNotification/set
.tasks/send
or tasks/sendSubscribe
request containing the initial user message and a unique Task ID.Task
object in the response.input-required
, the client sends subsequent messages using the same Task ID via tasks/send
or tasks/sendSubscribe
.completed
, failed
, canceled
).We highly value community contributions and appreciate your interest in A2A Protocol! Here’s how you can get involved:
Future plans include improvements to the protocol itself and enhancements to the samples:
Protocol Enhancements:
AgentCard
.QuerySkill()
method for dynamically checking unsupported or unanticipated skills.Sample & Documentation Enhancements:
A2A Protocol is an open source project run by Google LLC, under Apache License and open to contributions from the entire community.