Agent2Agent (A2A) Protocol
An open protocol enabling communication and interoperability between opaque agentic applications.
- Agent2Agent (A2A) Protocol
- See A2A in Action
- Conceptual Overview
- Typical Flow
- Getting Started
- Contributing
- What’s next
- About
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.
See A2A in Action
Watch this demo video to see how A2A enables seamless communication between different agent frameworks.
Conceptual Overview
The Agent2Agent (A2A) protocol facilitates communication between independent AI agents. Here are the core concepts:
- Agent Card: A public metadata file (usually at
/.well-known/agent.json) describing an agent’s capabilities, skills, endpoint URL, and authentication requirements. Clients use this for discovery. - A2A Server: An agent exposing an HTTP endpoint that implements the A2A protocol methods (defined in the json specification). It receives requests and manages task execution.
- A2A Client: An application or another agent that consumes A2A services. It sends requests (like
tasks/send) to an A2A Server’s URL. - Task: The central unit of work. A client initiates a task by sending a message (
tasks/sendortasks/sendSubscribe). Tasks have unique IDs and progress through states (submitted,working,input-required,completed,failed,canceled). - Message: Represents communication turns between the client (
role: "user") and the agent (role: "agent"). Messages containParts. - Part: The fundamental content unit within a
MessageorArtifact. Can beTextPart,FilePart(with inline bytes or a URI), orDataPart(for structured JSON, e.g., forms). - Artifact: Represents outputs generated by the agent during a task (e.g., generated files, final structured data). Artifacts also contain
Parts. - Streaming: For long-running tasks, servers supporting the
streamingcapability can usetasks/sendSubscribe. The client receives Server-Sent Events (SSE) containingTaskStatusUpdateEventorTaskArtifactUpdateEventmessages, providing real-time progress. - Push Notifications: Servers supporting
pushNotificationscan proactively send task updates to a client-provided webhook URL, configured viatasks/pushNotification/set.
Typical Flow
- Discovery: Client fetches the Agent Card from the server’s well-known URL.
- Initiation: Client sends a
tasks/sendortasks/sendSubscriberequest containing the initial user message and a unique Task ID. - Processing:
- (Streaming): Server sends SSE events (status updates, artifacts) as the task progresses.
- (Non-Streaming): Server processes the task synchronously and returns the final
Taskobject in the response.
- Interaction (Optional): If the task enters
input-required, the client sends subsequent messages using the same Task ID viatasks/sendortasks/sendSubscribe. - Completion: The task eventually reaches a terminal state (
completed,failed,canceled).
Getting Started
- 📚 Read the technical documentation to understand the capabilities
- 📝 Review the json specification of the protocol structures
- 🎬 Use our samples to see A2A in action
- Sample A2A Client/Server (Python, JS)
- Multi-Agent Web App
- CLI (Python, JS)
- 🤖 Use our sample agents to see how to bring A2A to agent frameworks
- Agent Development Kit (ADK)
- CrewAI
- Enterprise Data Agent (Gemini + Mindsdb)
- LangGraph
- Genkit
- LlamaIndex
- Marvin
- Semantic Kernel
- AG2 + MCP
- 📑 Review key topics to understand protocol details
- A2A and MCP
- Agent Discovery
- Enterprise Ready
- Push Notifications
Contributing
We highly value community contributions and appreciate your interest in A2A Protocol! Here’s how you can get involved:
- Get Started? Please see our contributing guide to get started.
- Have questions? Join our community in GitHub discussions.
- Want to help with protocol improvement feedback? Dive into GitHub issues.
- Private Feedback? Please use this Google form
- Existing Google Cloud platform customer and want to join our partner program to contribute to A2A ecosystem? Please fill this form
What’s next
Future plans include improvements to the protocol itself and enhancements to the samples:
Protocol Enhancements:
- Agent Discovery:
- Formalize inclusion of authorization schemes and optional credentials directly within the
AgentCard.
- Formalize inclusion of authorization schemes and optional credentials directly within the
- Agent Collaboration:
- Investigate a
QuerySkill()method for dynamically checking unsupported or unanticipated skills.
- Investigate a
- Task Lifecycle & UX:
- Support for dynamic UX negotiation within a task (e.g., agent adding audio/video mid-conversation).
- Client Methods & Transport:
- Explore extending support to client-initiated methods (beyond task management).
- Improvements to streaming reliability and push notification mechanisms.
Sample & Documentation Enhancements:
- Simplify “Hello World” examples.
- Include additional examples of agents integrated with different frameworks or showcasing specific A2A features.
- Provide more comprehensive documentation for the common client/server libraries.
- Generate human-readable HTML documentation from the JSON Schema.
About
A2A Protocol is an open source project run by Google LLC, under Apache License and open to contributions from the entire community.
Agent2Agent Protocol
Project Details
- waldzellai/A2A-PLUS
- Apache License 2.0
- Last Updated: 5/3/2025
Recomended MCP Servers
Model Context Protocol (MCP) server for Bing Webmaster Tools (BWT) allowing Claude.ai and other clients to interact with...
Enhanced MCP server for SearXNG: category-aware web-search, web-scraping, and date/time retrieval.
A simple MCP server that makes git commits on behave of AI, so that you can track AI...
A type-safe solution to remote MCP communication, enabling effortless integration for centralized management of Model Context.
This MCP server helps build Memory Bank - structured documentation system for context preservation
MCP Server for Metasploit
No fortress, purely open ground. OpenManus is Coming.
Supabase MCP Server enabling Cursor & Windsurf to use any method from Management API and query your database





