$ ls ./menu

© 2025 ESSA MAMDANI

cd ../blog
11 min read
technical

The Complete Guide to A2A Protocol in 2026: Building the HTTP for Agent-to-Agent Communication

> A2A Protocol v1.0 is the open standard enabling AI agents to discover, communicate, and collaborate across frameworks. Learn the architecture, implementation patterns, and how to build production-ready multi-agent systems today.

Audio version coming soon
The Complete Guide to A2A Protocol in 2026: Building the HTTP for Agent-to-Agent Communication
Verified by Essa Mamdani

The Complete Guide to A2A Protocol in 2026: Building the HTTP for Agent-to-Agent Communication

Meta Description: A2A Protocol v1.0 is the open standard enabling AI agents to discover, communicate, and collaborate across frameworks. Learn the architecture, implementation patterns, and how to build production-ready multi-agent systems today.

Keywords: A2A Protocol, Agent-to-Agent Protocol, multi-agent orchestration, AI agent interoperability, Google A2A, agent communication standard, A2A v1.0, agentic AI architecture, agent collaboration protocol, MCP vs A2A

Tags: technical, tutorial, deep-dive, agentic-ai, protocols, google, 2026


H1: The A2A Protocol Is What TCP/IP Was for the Internet—But for AI Agents

In April 2025, Google announced the Agent-to-Agent (A2A) Protocol. By June 2026, it had already done something remarkable: 150+ organizations were routing real tasks between agents in production—not in pilots, not on roadmaps, but in live systems. The Linux Foundation took governance. AWS Bedrock, Azure AI Foundry, and Google Cloud integrated it natively. And in March 2026, v1.0 dropped with a stateless HTTP core that finally scales on ordinary infrastructure.

If you're building agentic systems, you need to understand A2A. Not as a "nice-to-have" integration. As the foundational layer of your architecture.

I've spent the last year building multi-agent orchestration layers for AutoBlogging.Pro and portfolio projects. The difference between an agent that works in isolation and an agent that participates in a cooperative ecosystem is the difference between a calculator and the internet. A2A is the wire that makes that ecosystem possible.

This guide covers everything you need to know: the core architecture, the five building blocks, how it complements (not replaces) MCP, production implementation patterns, and the security model you need to deploy with confidence.


H2: What Is A2A Protocol? The 30-Second Definition

The A2A Protocol is an open standard that defines how AI agents discover each other, exchange structured messages, delegate tasks, and return artifacts—regardless of which framework built them, which model powers them, or which cloud hosts them.

Think of it this way:

  • MCP (Model Context Protocol) = How an agent plugs into tools and data (vertical integration)
  • A2A (Agent-to-Agent Protocol) = How agents talk to each other as peers (horizontal coordination)

They're not competitors. They're complementary layers of the agentic stack.

H3: The Origin Story: From Google Internal to Linux Foundation

A2A started at Google as a way to solve a very specific problem: different internal teams were building agents on LangChain, AutoGen, CrewAI, and custom frameworks. None of them could talk to each other. Integration meant writing bespoke glue code for every pair of agents.

Google open-sourced it in April 2025. By early 2026, IBM's Agent Communication Protocol merged into it. The AAIF (Agentic AI Foundation) now governs it under the Linux Foundation. And the v1.0 specification released in March 2026 is the first stable, production-ready version.

H3: Why 2026 Is the Tipping Point

Three things changed in 2026:

  1. v1.0 introduced a stateless HTTP core — previous versions required persistent JSON-RPC sessions, which broke at load-balancer scale. v1.0 makes A2A deployable on standard HTTP infrastructure.

  2. Enterprise adoption crossed the chasm — Salesforce, ServiceNow, Workday, SAP, and 150+ others went from "evaluating" to "shipping."

  3. The protocol stack clarified — developers now understand: MCP for tools, A2A for peers, ACP/UCP for commerce. No more confusion about which protocol does what.


H2: A2A Architecture: The Five Building Blocks

The v1.0 specification is explicitly layered. Understanding these five nouns is 80% of mastering the protocol.

H3: 1. Agent Card — The Capability Advertisement

Every A2A-compliant agent publishes an Agent Card at a well-known URL: /.well-known/agent-card.json. This JSON document describes:

  • Agent name, description, and version
  • Endpoint URL
  • Supported modalities (text, images, audio, video)
  • Authentication requirements (OAuth 2.1 + PKCE)
  • Capability flags (streaming, push notifications)
  • Available skills and their input/output schemas
json
1{
2  "name": "CodeReviewAgent",
3  "description": "Reviews pull requests for security and style",
4  "version": "1.2.0",
5  "url": "https://agents.essamamdani.com/code-review",
6  "capabilities": {
7    "streaming": true,
8    "pushNotifications": true
9  },
10  "skills": [
11    {
12      "name": "review_pr",
13      "description": "Review a GitHub PR for issues",
14      "inputSchema": {
15        "type": "object",
16        "properties": {
17          "repo": { "type": "string" },
18          "pr_number": { "type": "integer" }
19        }
20      }
21    }
22  ]
23}

H3: 2. Task — The Unit of Work

A Task is the fundamental unit of collaboration. Every task has:

  • A unique ID
  • A state machine (submittedworkinginput-requiredcompleted | failed | canceled)
  • A history of messages
  • Final artifacts (outputs)

Tasks are stateful. The client creates a task and the remote agent manages its lifecycle. This is crucial for long-running operations—like a security audit that takes 20 minutes or a multi-step research task.

H3: 3. Message — The Conversation Layer

Messages are the payload of agent-to-agent communication. Each message contains:

  • A role (user or agent)
  • One or more Parts (text, file, structured data)
  • Metadata (timestamp, task reference)
json
1{
2  "role": "user",
3  "parts": [
4    { "type": "text", "text": "Audit the auth layer for SQL injection vulnerabilities" },
5    { "type": "file", "file": { "name": "auth.py", "mimeType": "text/x-python", "bytes": "..." } }
6  ]
7}

H3: 4. Artifact — The Deliverable

An Artifact is the final output of a completed task. Unlike messages (which are conversational), artifacts are structured deliverables: a generated report, a refactored code file, a data analysis CSV, or a rendered image.

Artifacts are composed of Parts, just like messages, but they carry additional metadata about completion status and content type.

H3: 5. Streaming & Push Notifications — The Async Layer

Not every task completes in milliseconds. A2A v1.0 provides two mechanisms for long-running work:

  • Streaming (tasks/sendSubscribe): Real-time incremental updates via SSE or WebSocket. The client receives status changes and artifact chunks as they happen.

  • Push Notifications: The server POSTs updates to a client-provided webhook URL. Ideal for mobile clients, serverless functions, or agents that go offline.


H2: A2A vs MCP: The Complementary Stack Explained

The most common confusion I see: "Should I use A2A or MCP?" The answer is almost always both.

DimensionMCP (Model Context Protocol)A2A (Agent-to-Agent Protocol)
ScopeTool & data accessAgent-to-agent coordination
DirectionVertical (agent → tool)Horizontal (agent ↔ agent)
RelationshipHost/clientPeer-to-peer
DiscoveryStatic server configDynamic Agent Card discovery
SessionStateful JSON-RPCStateless HTTP (v1.0)
Best forDatabase queries, file access, API callsMulti-agent workflows, task delegation
Example"Query the Supabase users table""Ask the security agent to audit this code"

H3: The Three-Layer Agentic Stack

In production, your architecture looks like this:

┌─────────────────────────────────────────────┐
│  A2A Layer: Agent-to-Agent Coordination     │  ← "Who should handle this?"
│  (task delegation, multi-agent workflows)     │
├─────────────────────────────────────────────┤
│  MCP Layer: Tool & Context Access           │  ← "What tools do I need?"
│  (databases, APIs, file systems)            │
├─────────────────────────────────────────────┤
│  Model Layer: LLM Inference                   │  ← "How do I think?"
│  (Gemini, Claude, GPT, local models)          │
└─────────────────────────────────────────────┘

A practical example: My AutoBlogging.Pro system uses A2A to coordinate between a Research Agent, Writing Agent, and SEO Agent. Each of those agents uses MCP to connect to their respective tools (SerpAPI, Supabase, Deepgram). A2A handles the orchestration. MCP handles the tool access.


H2: Production Implementation: Building an A2A Server in Python

Let's walk through a minimal but production-ready A2A server using Python and FastAPI. This is the pattern I use for agent services that need to interoperate with other frameworks.

H3: Step 1: Define the Agent Card

python
1# agent_card.py
2from pydantic import BaseModel, Field
3from typing import List, Optional
4
5class Skill(BaseModel):
6    name: str
7    description: str
8    input_schema: dict
9
10class AgentCard(BaseModel):
11    name: str = "SecurityAuditAgent"
12    description: str = "Audits code for security vulnerabilities"
13    version: str = "1.0.0"
14    url: str = "https://agents.essamamdani.com/security-audit"
15    capabilities: dict = Field(default_factory=lambda: {
16        "streaming": True,
17        "pushNotifications": False
18    })
19    skills: List[Skill] = [
20        Skill(
21            name="audit_code",
22            description="Scan code for OWASP Top 10 vulnerabilities",
23            input_schema={
24                "type": "object",
25                "properties": {
26                    "code": {"type": "string"},
27                    "language": {"type": "string"}
28                },
29                "required": ["code", "language"]
30            }
31        )
32    ]

H3: Step 2: Implement the Task Lifecycle

python
1# server.py
2from fastapi import FastAPI, HTTPException
3from fastapi.responses import JSONResponse
4from uuid import uuid4
5import asyncio
6
7app = FastAPI()
8tasks = {}  # In production: use Redis
9
10@app.get("/.well-known/agent-card.json")
11async def get_agent_card():
12    return agent_card  # Return the AgentCard instance
13
14@app.post("/tasks/send")
15async def send_task(request: dict):
16    task_id = str(uuid4())
17    task = {
18        "id": task_id,
19        "state": "submitted",
20        "messages": [request["message"]],
21        "artifacts": []
22    }
23    tasks[task_id] = task
24
25    # Process asynchronously
26    asyncio.create_task(process_task(task_id))
27    return task
28
29async def process_task(task_id: str):
30    task = tasks[task_id]
31    task["state"] = "working"
32
33    # Actual agent work here
34    result = await run_security_audit(task["messages"][0])
35
36    task["artifacts"] = [{
37        "type": "text",
38        "text": result
39    }]
40    task["state"] = "completed"

H3: Step 3: Handle Streaming Updates

python
1from fastapi.responses import StreamingResponse
2import json
3
4@app.post("/tasks/sendSubscribe")
5async def send_task_stream(request: dict):
6    task_id = str(uuid4())
7    tasks[task_id] = {"id": task_id, "state": "submitted", "messages": []}
8
9    async def event_stream():
10        yield f"data: {json.dumps({'state': 'working'})}\n\n"
11
12        # Stream partial results
13        for chunk in await run_audit_stream(request["message"]):
14            yield f"data: {json.dumps({'partialResult': chunk})}\n\n"
15
16        tasks[task_id]["state"] = "completed"
17        yield f"data: {json.dumps({'state': 'completed', 'final': True})}\n\n"
18
19    return StreamingResponse(
20        event_stream(),
21        media_type="text/event-stream"
22    )

H2: Multi-Agent Orchestration Patterns with A2A

A2A enables several production-proven patterns. Here are the four I use most often.

H3: Pattern 1: Supervisor-Worker (Centralized)

A central orchestrator agent receives the task, decomposes it, and delegates to specialized workers via A2A. The orchestrator maintains global state and merges results.

Best for: Complex workflows with known subtasks (e.g., "build a full-stack app")

A2A flow:

User → Supervisor Agent → A2A → Research Agent
                      → A2A → Code Agent
                      → A2A → Test Agent
                      ← Results ← Merged Output

H3: Pattern 2: Fan-Out/Fan-In (Parallel)

The client agent sends the same task to multiple specialized agents in parallel, then merges the results.

Best for: Evaluation, A/B testing, or consensus tasks (e.g., "get three security opinions on this code")

H3: Pattern 3: Pipeline (Sequential)

Tasks flow through a fixed chain of agents, each agent's output becoming the next agent's input.

Best for: Content pipelines (e.g., Research → Draft → Edit → SEO Optimize → Publish)

H3: Pattern 4: Peer-to-Peer (Decentralized)

Agents discover each other via Agent Cards and negotiate directly. No central coordinator.

Best for: Large-scale, cross-organizational agent networks where no single party controls the orchestration.


H2: Security Model: OAuth 2.1, Sandboxing, and Least Privilege

A2A v1.0 specifies OAuth 2.1 with PKCE for authentication. But the protocol is only as secure as your implementation.

H3: Critical Security Practices

  1. Authenticate every Agent Card — Verify the publisher's identity before trusting capabilities
  2. Sandbox local processes — Agent code runs with restricted permissions
  3. Audit tool permissions — Use least-privilege access for every agent connection
  4. Validate input schemas — Reject malformed task requests before processing
  5. Implement rate limiting — Agents can loop; protect your endpoints

H3: The Enterprise Readiness Checklist

Google Cloud Next 2026 revealed what enterprises actually need from A2A:

  • ✅ Audit trails for every task delegation
  • ✅ SSO integration (SAML 2.0 / OIDC)
  • ✅ Gateway behavior (Apigee as API-to-agent bridge)
  • ✅ Configuration portability across clouds

H2: The 2026 Ecosystem: Who's Using A2A in Production?

As of June 2026, the A2A landscape looks like this:

  • Cloud Platforms: Google Cloud (ADK v1.0), AWS (Bedrock AgentCore), Azure (AI Foundry)
  • Enterprise Software: Salesforce, ServiceNow, Workday, SAP, Box, Cisco
  • Frameworks: LangGraph, CrewAI, AutoGen (AG2), Semantic Kernel
  • Infrastructure: Tyk, Kong, Apigee (API gateway integration)
  • Education: DeepLearning.AI launched an A2A certification course

The most telling stat: search volume for "a2a protocol" grew 52% quarter-over-quarter in Q2 2026. This isn't a niche spec. It's becoming the HTTP of the agentic web.


H2: FAQ — A2A Protocol Questions Answered

H3: What is the difference between A2A and MCP?

MCP connects agents to tools and data (vertical). A2A connects agents to other agents (horizontal). You use MCP to let your agent query a database. You use A2A to ask another agent to query a database for you.

H3: Can A2A work with local agents, or only cloud-hosted ones?

A2A works anywhere HTTP does. Local agents can expose Agent Cards on localhost. The protocol doesn't mandate cloud hosting—just standard web transport.

H3: What transport protocols does A2A v1.0 support?

Three bindings: JSON-RPC 2.0 over HTTPS (most common), gRPC, and HTTP+JSON/REST. The stateless HTTP/REST binding is new in v1.0 and solves the load-balancer problem.

H3: How do agents discover each other?

Via Agent Cards published at /.well-known/agent-card.json. Discovery registries (like the one the AAIF maintains) aggregate these cards for searchable agent directories.

H3: Is A2A replacing REST APIs?

No. A2A is an inter-agent protocol. Your microservices should still expose REST/GRPC APIs. A2A sits at the agent layer above your existing infrastructure.

H3: What are the main failure modes in production?

  • Agent Card staleness: The advertised capabilities don't match the actual implementation
  • Task timeout cascades: A slow agent blocks downstream agents
  • Auth token expiration: Long-running tasks fail mid-flight because OAuth tokens expired
  • Schema drift: The input schema changes but the Agent Card wasn't updated

H3: Where can I try A2A without building from scratch?

Google's official codelab walks through a "purchasing concierge" example using Cloud Run and Agent Engine. The a2aproject/A2A GitHub repo has SDKs for Python and TypeScript.


H2: Conclusion — The Agentic Web Needs a Wire Protocol

We're past the "single agent" era. The systems that matter in 2026 are distributed, multi-agent, and cross-organizational. Without a standard protocol, every integration becomes a bespoke integration. That's not scalable.

A2A v1.0 is that standard. It solves discovery, delegation, and delivery with a clean, layered architecture that scales on ordinary HTTP infrastructure. Combined with MCP for tool access, it forms the complete foundation for agentic applications.

Next Steps

  1. Read the v1.0 spec at a2a-protocol.org
  2. Try the Python SDK from a2aproject/A2A on GitHub
  3. Build your first Agent Card and expose it at /.well-known/agent-card.json
  4. Connect it to an MCP server and watch the full stack come together

The infrastructure for the agentic web is here. The question isn't whether you'll adopt A2A. It's whether you'll build on it before your competitors do.


Written by Essa Mamdani — AI Engineer, architect of AutoBlogging.Pro, and builder of agentic systems that actually ship.

Internal Links:

  • The Complete Guide to MCP in 2026
  • Multi-Model AI Agent Routing: The 2026 Engineering Playbook
  • FinOps for AI Agents: Cost Architecture for Autonomous Systems
  • AutoBlogging.Pro — AI Content Automation
#technical#tutorial#deep-dive#agentic-ai#protocols#google#2026