Skip to content
Deep Dive a2a mcp protocol

Agent-to-Agent Orchestration: From MCP to A2A

Multi-agent systems used to mean one of two things: a research-paper diagram, or a Python framework where the "agents" were classes calling each other in-process. By 2026 both have been displaced. Real production agentic firms talk to other firms' agents — across vendor boundaries, across tenant boundaries, with typed contracts and authenticated identities.

That world needs two protocols, not one. MCP (Model Context Protocol) is the transport for tools — how an agent calls external functions, datasources, integrations. A2A (Agent2Agent) is the transport for agents — how an agent calls another agent, with the call understood as a delegation rather than a function invocation.

This essay explains both, where each fits, why the distinction matters, and what an agentic firm has to do to interoperate.

Two layers, not one

The most common error in current vendor writeups is treating MCP and A2A as alternatives to each other. They're complementary layers:

  • MCP (spec) is transport-layer. It says: here's a stateless function call, here are its typed inputs, here's its typed output, here's the auth context. Any agent that speaks MCP can call any MCP server. Anthropic shipped the spec in late 2024; by 2026 every major model provider supports it.
  • A2A (spec) is coordination-layer. It says: here's a task I'm delegating to you (another agent), here's the context, here's how to report status, here's how to escalate. A2A presumes the receiving party is itself an agent with its own Identity and Heart, not a tool.

In the 8-primitives framing, MCP is what the Brain uses to reach into Tools; A2A is what travels along the Friends edges of the inter-agent graph.

If you tried to do A2A-style delegation using MCP, you'd either lose the receiver's identity (the call would look like an anonymous tool invocation) or you'd embed a bespoke task-tracking schema inside the MCP payload that nobody else understands. If you tried to do MCP-style tool use over A2A, you'd be wrapping every database query in a "please ask this agent to query the database" trip. Both work; neither is correct.

Why MCP won

For tool calling specifically, MCP won the standards race in 2025 for three reasons:

  1. Vendor independence. An MCP server written by Anthropic works with OpenAI's Assistants API, Google's Gemini, Meta's Llama-based agents — anything that speaks MCP. Tool authors stopped having to maintain N vendor-specific adapters.
  2. Local + remote symmetry. MCP servers can run in the agent's process (stdio transport) or remotely (SSE / WebSocket). Same protocol; the agent doesn't care.
  3. Composability. An MCP server can be a Postgres connector, a filesystem walker, a Stripe wrapper, or an LLM-backed sub-agent. The discovery + invocation surface is identical.

For an agentic firm, the practical implication is: don't write tools as model-vendor-specific functions. Write them as MCP servers. Every agent in the fleet inherits access without bespoke wiring.

The Anthropic MCP introduction post covers the spec in detail; we won't restate it here. What matters from a firm-design perspective:

  • One MCP server per integration, not per agent.
  • Auth flows through MCP context, not through tool args.
  • Server logs are part of the audit trail. Treat them as first-class compliance artefacts.

Why A2A exists

A2A is younger (2025, Google announcement). The motivation: once you have multiple agents — yours, your customer's, your vendor's, your partner's — calling one as a tool doesn't model the relationship correctly.

A2A messages carry:

  • A typed task (what's being delegated).
  • A principal identity (whose agent is calling).
  • An agent_card reference (who the receiver is, what they can do; see the agent-cards explainer satellite).
  • A state machine for the task (queued / running / waiting-on-human / done / failed).
  • A report_back channel for status updates.

This shape isn't accidental. It mirrors what's already true inside a single firm: tasks have owners, states, and outcomes. A2A says: that should be true across firms too.

In the AgentsBooks substrate, every Friends edge is implicitly an A2A endpoint. When agent A delegates to agent B (same firm or different), the substrate emits A2A-shaped messages. Logs, retries, escalations, and audit trail follow.

The MCP↔A2A boundary in practice

A concrete example: a 12-person KYC firm uses an agentic compliance practice (their own firm, on AgentsBooks). They review customers from a fintech client. The fintech wants real-time visibility into review status.

  • The fintech's own agent (their orchestrator) calls the KYC firm's intake agent over A2A with a task = "review this customer." That's delegation across firms — both parties have agents with identities, audit trails, and SLAs.
  • The KYC firm's intake agent uses MCP servers for the document parsing, the WorldCheck screening, the OFAC list lookup. Those are tools, not agents.
  • The intake agent escalates the case to a senior reviewer (another agent in the same firm) over A2A. Same protocol, intra-firm.
  • Status flows back to the fintech's orchestrator over A2A as state transitions.

This is what tractable multi-firm agent orchestration looks like. The protocols draw the lines; the substrate enforces them.

Competing camps — read them honestly

A2A and MCP aren't the only attempts. Four other camps deserve mention:

LangGraph (LangChain Inc.) — graph-based orchestration in-process. Excellent for single-firm, single-runtime multi-agent setups. Doesn't cross runtime boundaries cleanly; effectively unusable for cross-firm work.

n8n — workflow-engine view, where agents are nodes in a visual flow. Right for ops automation; wrong for the unbounded-task case where an agent might spawn subtasks dynamically.

AutoGen (Microsoft Research paper) — the original "conversable agents" framing. Still the right reading for the research side of multi-agent coordination; AutoGen has begun emitting A2A messages as of late 2025.

OpenAI Assistants — a single-vendor walled garden. Useful inside an OpenAI-only stack; the lock-in cost has grown to the point where most enterprise buyers won't accept it without an exit plan.

The dominant pattern in 2026 is MCP for tools + A2A for agents, regardless of which framework you build inside. Even LangGraph + AutoGen + Assistants have begun emitting MCP for outbound tool calls and A2A for outbound delegations.

What this lets the agentic firm do

Three concrete capabilities the firm gets for free by speaking both protocols:

  1. Customer-side observability. The fintech in the example above can see real-time review status without bespoke integration — A2A status messages flow into their own dashboard.
  2. Vendor swap-out. If the KYC firm decides to replace its document-parsing MCP server (say, from one vendor to another), no agent in the fleet needs reconfiguration. The MCP server registration changes; everything else is unaware.
  3. Cross-firm composability. The KYC firm could later sell its intake-agent capacity to another fintech — same A2A endpoint, different principal, same audit trail discipline.

This is the marketplace flywheel STRATEGY.md §3 P6 — the Agent Marketplace Economics pillar — depends on. Without protocols, you can't have a marketplace. With protocols, you have one for free.

Common failure modes

Sending tool calls over A2A. Every database query becomes a multi-hop conversation between agents. Latency explodes. Correct fix: register the database as an MCP server, expose it as a tool to whichever agent needs it.

Sending agent delegations over MCP. The "tool" loses its identity, becomes anonymous in the audit log, and can't report state transitions. Correct fix: use A2A. If your stack only speaks MCP, wrap the receiver in an MCP server that internally speaks A2A and proxy.

Mixing the auth contexts. MCP auth is typically the agent's auth (a token scoped to the agent's permissions). A2A auth is the firm's auth (a token attesting which firm is delegating). Confusing the two breaks the audit trail and may trigger SOC 2 access-control findings.

Where the protocols are going

MCP 1.x is stable. The active spec work is around streaming responses, partial results, and cancellation. Expect those in MCP 2.0 by end of 2026.

A2A 0.x is moving faster. Open spec questions: standard agent_card schema for capability advertisement (likely converging with Google's agent-cards proposal); cross-firm trust + revocation; pricing/metering primitives for marketplace use.

If you're building today: build to MCP 1.x for tools (it's locked). Build to A2A 0.x for agents (expect breaking changes for the next 12 months, but the directional bets are clear).

Frequently asked questions

Q: Can I run MCP + A2A locally for development?
A: Yes. Both protocols support local (stdio + Unix socket) transports. The substrate's dev mode wires every Friends edge to a local A2A loop so you can test multi-agent workflows without leaving your machine.

Q: Do I need to write MCP servers from scratch?
A: Usually not. The MCP server registry ships official servers for filesystem, GitHub, Stripe, Postgres, Slack, Google Drive, and 30+ others. Most agentic firms run mostly on registry servers + 1–2 firm-specific ones.

Q: What about WebSocket / Server-Sent Events vs HTTP?
A: MCP supports both. Stateless tool calls use HTTP; streaming tools use SSE. A2A is similar — the state machine for long-running tasks naturally wants SSE for status updates.

Q: How does this interact with the 8 primitives?
A: MCP is what Brain uses to reach Tools. A2A is what travels along Friends edges. Both layers emit logs into Memory (per Pillar P1).


Want to see MCP + A2A working in the substrate? Spin up a multi-agent firm — start free →

🚀 Ready to build this yourself?

Create the agent described in this article in under 2 minutes — no code required.

Try It Free → Book a Demo
Share this article
𝕏 Share 🔗 LinkedIn
Playbooks

Turn this into a working agent

Browse all playbooks →

Ready to build this agent?

Setup takes less than 2 minutes. No coding required.

Start Building Free →
Image
Copy link
X
LinkedIn
Reddit
Download