Content
# Awesome A2A [](https://awesome.re) 🤖🔗
A curated list of awesome resources for A2A.
## Contents
- [Awesome A2A 🤖🔗](#awesome-a2a--)
- [Contents](#contents)
- [What is A2A? 🤔](#what-is-a2a-)
- [What differentiates A2A and MCP? ⚖️](#what-differentiates-a2a-and-mcp-️)
- [How does A2A work? ⚙️](#how-does-a2a-work-️)
- [Key Principles 🔑](#key-principles-)
- [Getting Started 🚀](#getting-started-)
- [Official Resource 📚](#official-resource-)
- [⚙️ Implementations \& Libraries 🧩](#️-implementations--libraries-)
- [Official Samples 🧪](#official-samples-)
- [Framework Integrations (Official Samples) 🔌](#framework-integrations-official-samples-)
- [💬 Community 🌐](#-community-)
## What is A2A? 🤔
A2A is an open protocol from Google that enables AI agents to communicate and collaborate across different platforms and frameworks, regardless of their underlying technologies. It's designed to maximize the benefits of agentic AI by enabling true multi-agent scenarios. 🌍✨

## What differentiates A2A and MCP? ⚖️
Agentic applications need both A2A and MCP. We recommend MCP for tools and A2A for agents. 🤝
- 🔧 MCP (Model Context Protocol) for tools and resources
- Connect agents to tools, APIs, and resources with structured inputs/outputs. 🔌
- Google ADK supports MCP tools. Enabling wide range of MCP servers to be used with agents. 🛠️
- 🤖 A2A (Agent2Agent Protocol) for agent-agent collaboration
- Dynamic, multimodal communication between different agents without sharing memory, resources, and tools 💬
- Open standard driven by community. 🌱
- Samples available using Google ADK, LangGraph, Crew.AI 🧪

## How does A2A work? ⚙️
A2A facilitates communication between a "client" agent and a "remote" agent. A client agent is responsible for formulating and communicating tasks, while the remote agent is responsible for acting on those tasks in an attempt to provide the correct information or take the correct action. This interaction involves several key capabilities:
- **Capability discovery**: Agents can advertise their capabilities using an "Agent Card" in JSON format, allowing the client agent to identify the best agent that can perform a task and leverage A2A to communicate with the remote agent.
- **Task management**: The communication between a client and remote agent is oriented towards task completion, in which agents work to fulfill end-user requests. This "task" object is defined by the protocol and has a lifecycle. It can be completed immediately or, for long-running tasks, each of the agents can communicate to stay in sync with each other on the latest status of completing a task. The output of a task is known as an "artifact."
- **Collaboration**: Agents can send each other messages to communicate context, replies, artifacts, or user instructions.
- **User experience negotiation**: Each message includes "parts," which is a fully formed piece of content, like a generated image. Each part has a specified content type, allowing client and remote agents to negotiate the correct format needed and explicitly include negotiations of the user's UI capabilities–e.g., iframes, video, web forms, and more.
See the full details of how the protocol works in our draft specification.

## Key Principles 🔑
Using A2A, agents accomplish tasks for end-users without sharing memory, thoughts, or tools. Instead the agents exchange context, status, instructions, and data in their native modalities. 🔄
- ✅ **Simple**: Reuse existing standards
- 🛡️ **Enterprise Ready**: Auth, Security, Privacy, Tracing, Monitoring
- ⏳ **Async First**: (Very) Long running-tasks and human-in-the-loop
- 🎨 **Modality Agnostic**: text, audio/video, forms, iframe, etc.
- 🕶️ **Opaque Execution**: Agents do not have to share thoughts, plans, or tools.
## Getting Started 🚀
New to A2A? Here's a suggested path:
1. 📖 **Understand the Basics:** Read the sections above ([What is A2A?](#what-is-a2a), [Key Principles](#key-principles), [How does A2A work?](#how-does-a2a-work)). Check the 📰 [Announcement Blog Post](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/).
2. 🧠 **Explore Core Concepts:** Dive into the 📖 [Official Technical Documentation](https://google.github.io/A2A/#/documentation), focusing on `Agent Card`, `Task`, `Message`, `Part`, and `Artifact`.
3. 🎥 **See it in Action:** Watch the 🎥 [Official Demo Video](https://storage.googleapis.com/gweb-developer-goog-blog-assets/original_videos/A2A_demo_v4.mp4) and explore the code for the 🌐 [Multi-Agent Web App Demo](https://github.com/google/A2A/tree/main/demo).
4. 💻 **Run the Samples:** Clone the [Official Repo](https://github.com/google/A2A) and follow the instructions in `/samples` to run a client (like the CLI) and a sample agent (e.g., LangGraph or Genkit agent). See the [Official Samples](#official-samples) tables below for links.
5. 🔍 **Review the Code:** Look at the `common` (Python) or `server`/`client` (JS/TS) libraries in the official samples to see how A2A communication is implemented.
6. 🛠️ **Try Building:** Adapt a sample or use a library to create your own basic A2A agent or client.
## Official Resource 📚
- 🌐 [A2A Protocol Website](https://google.github.io/A2A/) - The main documentation site.
- 👩💻 [google/A2A GitHub](https://github.com/google/A2A) - Source code for the spec, docs, and official samples.
- 📢 [Google Developers Blog Post](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/) - Announcement blog post explaining the motivation and partners.
## ⚙️ Implementations & Libraries 🧩
#### Official Samples 🧪
*These demonstrate basic A2A client/server communication.* 📡
| Language | Type | Framework | Description | Link |
| :------- | :--------------- | :-------- | :------------------------------------------ | :------------------------------------------------------------------------------ |
| 🐍 Python | 📚 Common Library | - | Core HTTP, JSON-RPC, SSE handling | [Link](https://github.com/google/A2A/tree/main/samples/python/common) |
| 🐍 Python | 💻 Host (Client) | CLI | Command-line client example | [Link](https://github.com/google/A2A/tree/main/samples/python/hosts/cli) |
| 🐍 Python | 🛠️ Host (Agent) | ADK | Orchestrator agent delegating to A2A agents | [Link](https://github.com/google/A2A/tree/main/samples/python/hosts/multiagent) |
| 🚀 JS/TS | 📦 Client Library | - | Client implementation | [Link](https://github.com/google/A2A/tree/main/samples/js/src/client) |
| 🚀 JS/TS | 💻 Host (Client) | CLI | Command-line client example | [Link](https://github.com/google/A2A/blob/main/samples/js/src/cli.ts) |
#### Framework Integrations (Official Samples) 🔌
*These show how agents built with specific frameworks can expose an A2A interface.* 🧠
| Language | Agent Framework | Agent Description | Key A2A Features Demonstrated | Link |
| :------- | :-------------- | :------------------------------- | :------------------------------ | :------------------------------------------------------------------------------- |
| 🐍 Python | LangGraph | 💱 Currency conversion | Tools, Streaming, Multi-turn | [Link](https://github.com/google/A2A/tree/main/samples/python/agents/langgraph) |
| 🐍 Python | CrewAI | Image generation | Non-textual Artifacts (Files) | [Link](https://github.com/google/A2A/tree/main/samples/python/agents/crewai) |
| 🐍 Python | Google ADK | Expense reimbursement | Multi-turn, Forms (DataPart) | [Link](https://github.com/google/A2A/tree/main/samples/python/agents/google_adk) |
| 🚀 JS/TS | Genkit | 🎥 Movie info / 💻 Code generation | Tools, Artifacts (Files), Async | [Link](https://github.com/google/A2A/tree/main/samples/js/src/agents) |
## 💬 Community 🌐
* 🐞 [google/A2A GitHub Issues](https://github.com/google/A2A/issues) - For reporting bugs or suggesting protocol improvements.
* 💬 [google/A2A GitHub Discussions](https://github.com/google/A2A/discussions/) - For general questions, ideas, and community discussions about the A2A protocol.
* 📧 [Private Feedback Form](https://docs.google.com/forms/d/e/1FAIpQLScS23OMSKnVFmYeqS2dP7dxY3eTyT7lmtGLUa8OJZfP4RTijQ/viewform) - Google form for private feedback.