An open protocol enabling communication and interoperability between opaque agentic applications.

undefinedAn open protocol enabling communication and interoperability between opaque agentic applications.undefined
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.undefinedTypical Flow:undefined
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 welcome contributions! Please see our contributing guide to get started.
Have questions? Join our community in GitHub discussions.
Help with protocol improvement feedback, in GitHub issues.
Want to send private feedback? use this Google form
Future plans include improvements to the protocol itself and enhancements to the samples:
undefinedProtocol Enhancements:undefined
AgentCard.QuerySkill() method for dynamically checking unsupported or unanticipated skills.undefinedSample & Documentation Enhancements:undefined
A2A Protocol is an open source project run by Google LLC, under License and open to contributions from the entire community.
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.