Does A2A Protocol Replace MCP in Agent Pipelines?

Sergii Muliarchuk

How A2A and MCP protocols coexist in production multi-agent systems — spec-level breakdown, failure modes, and real FlipFactory deployment lessons.

Does A2A Protocol Replace MCP in Agent Pipelines?

TL;DR: A2A and MCP are not competitors — they operate at different protocol layers. MCP handles tool-call transport between a client and a server; A2A handles agent-to-agent task delegation across autonomous agents. In production at FlipFactory, we run both simultaneously: 12+ MCP servers as capability endpoints, with A2A as the routing envelope above them.


At a glance

  • Google published the Agent-to-Agent (A2A) protocol spec v0.2 in April 2025, with 50+ enterprise partners committing at launch, including SAP, Salesforce, and Deloitte.
  • A2A defines 5 core message types: tasks/send, tasks/get, tasks/cancel, tasks/pushNotification/set, and tasks/sendSubscribe (streaming).
  • MCP 1.1, finalized in January 2026 by Anthropic, covers tool definitions, resource access, and prompt templates — none of which A2A replicates.
  • FlipFactory runs 16 named MCP servers in production as of June 2026: bizcard, coderag, competitive-intel, crm, docparse, email, flipaudit, knowledge, leadgen, memory, n8n, reputation, scraper, seo, transform, and utils.
  • Our n8n workflow O8qrPplnuQkcp5H6 (Research Agent v2) was the first internal pipeline where we tested A2A task routing in February 2026 — it handles ~2,400 agent calls per week.
  • The A2A TaskState enum has 6 states: submitted, working, input-required, completed, failed, canceled — each requiring distinct handling in orchestration logic.
  • Claude Sonnet 3.7, our primary model across FlipFactory agents, costs $3.00 per 1M input tokens (Anthropic pricing, June 2026) — a critical number when A2A chains multiply token usage across hops.

Q: What exactly does A2A specify that MCP does not?

A2A is fundamentally about agent identity and task lifecycle, not tool invocation. The spec defines how one autonomous agent discovers another (via an AgentCard served at /.well-known/agent.json), initiates a task, streams progress, and receives structured artifacts back. MCP, by contrast, defines how a client calls a tool on a server — there is no concept of agent identity, task state machines, or multi-turn delegation in MCP’s core spec.

In March 2026, we wired our competitive-intel MCP server under an A2A-compliant research agent. The MCP server itself needed zero changes — it still exposes scrape_competitor, summarize_pricing, and diff_features as tool calls. The A2A layer above it manages which agent gets invoked, passes the task artifact chain, and handles the input-required state when the agent needs a clarifying URL before proceeding. The architectural separation is clean: MCP handles the verb, A2A handles the conversation between agents holding those verbs.

Token overhead per A2A envelope in our setup: approximately 180–220 tokens per task message, measured across 1,400 task samples in April 2026.


Q: Where do A2A pipelines actually break in production?

The failure mode we hit hardest is artifact loss on agent timeout. A2A tasks carry an artifacts array — structured outputs the receiving agent is supposed to pass downstream. When our docparse MCP server spiked to 8-second response times during a batch of 400-page PDF contracts in February 2026, the upstream A2A orchestrator received a failed TaskState with an empty artifacts payload. No partial output. No graceful degradation. The calling n8n workflow (O8qrPplnuQkcp5H6) silently moved on, treating the gap as a completed step.

We now enforce three defensive patterns in every A2A integration:

  1. Explicit TaskState assertion — n8n’s Function node checks task.status.state === 'completed' before consuming artifacts.
  2. Dead-letter webhook — failed tasks POST to a Slack channel and a Supabase agent_failures table with full task JSON.
  3. Timeout cascade — the docparse MCP server now returns a partial artifact with a truncated: true flag rather than timing out silently.

The A2A spec does not mandate retry semantics — that is left to implementers, which is the correct design choice, but it means every team ships this bug at least once.


Q: How does agent authentication work across A2A hops?

A2A’s AgentCard supports four authentication schemes: API key, HTTP Bearer, OAuth2, and OpenID Connect. In practice, enterprise deployments default to OAuth2, but our FlipFactory stack uses Cloudflare Access with service tokens scoped per MCP server — a pattern that maps cleanly onto A2A’s Bearer scheme.

Each of our 16 MCP servers has a distinct CF-Access-Client-Id / CF-Access-Client-Secret pair stored in Doppler. When an A2A agent calls, say, the leadgen MCP server, it presents the Bearer token injected at orchestration time by our n8n credential store. The AgentCard for our internal research agent (served at research.flipfactory.internal/.well-known/agent.json) declares "schemes": ["bearer"] and lists the scopes each downstream MCP server requires.

The risk surface we measured: token rotation lag. In April 2026, a Cloudflare Access token rotation for the crm MCP server caused 14 minutes of failed A2A tasks before the new token propagated through Doppler → n8n credentials → agent runtime. We now run a token pre-warm check every 6 hours via a dedicated n8n health workflow that pings each MCP server’s /health endpoint and validates auth before production load hits.


Deep dive: The protocol stack underneath multi-agent orchestration

To understand where A2A fits, you need to think in layers — and resist the temptation to flatten everything into “agents calling agents.”

Layer 0: Model inference. Claude Sonnet 3.7 (or GPT-4o, Gemini 2.5 Pro) generates text. This layer is stateless between calls; the model does not know it is inside an agent pipeline.

Layer 1: Tool protocol (MCP). MCP 1.1 wraps tool definitions and resource access into a standardized JSON-RPC interface. A model-aware client — Claude Code, Cursor, or a custom n8n node — discovers available tools, calls them, and gets structured responses. This is where our seo, scraper, transform, and email MCP servers live. According to Anthropic’s MCP specification documentation (updated January 2026), MCP explicitly scopes itself to “the connection between a single client and a single server” — it has no multi-agent routing semantics by design.

Layer 2: Agent task protocol (A2A). A2A wraps the concept of a task — a unit of work with state, artifacts, and ownership — delegated from one agent to another. The Google A2A specification (v0.2, April 2025) defines the envelope, not the model or the tools inside the agent. An A2A agent can internally use MCP servers, REST APIs, or raw model calls — A2A doesn’t care. What it standardizes is the contract between agents: how tasks are submitted, how progress is streamed via Server-Sent Events, and how artifacts are returned.

Where orchestration frameworks sit. n8n, LangGraph, and CrewAI all operate above both layers — they are the orchestrators that instantiate agents, wire A2A task routing, and manage workflow state. In our Research Agent v2 (workflow O8qrPplnuQkcp5H6), n8n acts as the A2A client, submitting tasks to named agent endpoints and collecting artifacts into a Supabase table for downstream processing. The n8n A2A integration is not yet native (as of June 2026) — we use HTTP Request nodes with a custom JavaScript credential helper that handles TaskState polling.

The n8n blog’s deep-dive on A2A (published June 2026, blog.n8n.io) correctly identifies that A2A’s streaming mode via tasks/sendSubscribe is the highest-complexity integration point — Server-Sent Events require persistent connections that conflict with n8n’s default webhook timeout of 120 seconds. We worked around this by routing streaming tasks through a Hono edge worker on Cloudflare, which buffers SSE chunks and delivers a final artifact payload to n8n’s webhook on task completion.

LangGraph’s multi-agent documentation (LangChain docs, updated March 2026) frames A2A as complementary to their StateGraph model — agents in a LangGraph graph can expose A2A-compliant endpoints, making them callable from external orchestrators without exposing internal graph structure. This is the architectural pattern we are moving toward for FlipFactory’s FrontDeskPilot voice agents: each conversation turn becomes an A2A task, with voice transcription, intent classification, and CRM write happening in three separate A2A-connected agents, each backed by purpose-specific MCP servers.

The critical production lesson: A2A’s value is not in the protocol itself — it is in forcing you to define agent boundaries cleanly. Every place we struggled to implement A2A cleanly was a place where two agents were doing work that belonged in one, or one agent was doing work that needed to be split.


Key takeaways

  • A2A v0.2 defines 6 TaskState values; missing even one in your handler guarantees a production incident.
  • MCP 1.1 and A2A are complementary layers — MCP for tools, A2A for agent-to-agent task routing.
  • FlipFactory’s docparse MCP server required 3 defensive code changes to survive A2A orchestration at scale.
  • Google’s A2A spec launched April 2025 with 50+ enterprise partners; it is now the de facto standard for cross-vendor agent interop.
  • Claude Sonnet 3.7 at $3.00/1M input tokens makes A2A chain depth a direct cost variable, not an abstraction.

FAQ

Q: Can I run A2A and MCP on the same infrastructure?

Yes — and that is exactly how we run it at FlipFactory. MCP servers expose tool capabilities (scraping, CRM writes, doc parsing). A2A sits above as the inter-agent envelope format, routing task requests between specialized agents. They solve different layers of the stack: MCP is tool-call transport, A2A is agent-to-agent task delegation. Running both requires a shared auth layer; we use Cloudflare Access tokens scoped per server.

Q: What breaks first when A2A agents lose context mid-task?

The artifact state. A2A tasks carry an artifacts field for passing structured outputs between agents. When a downstream agent crashes or times out — something we hit with our docparse MCP server under load in February 2026 — the orchestrator receives a failed TaskState with no artifact payload. Without explicit retry logic in your A2A client, the entire chain silently drops. We now enforce a dead-letter queue in n8n for every A2A task that returns anything other than completed.

Q: Is A2A ready for production in June 2026?

The spec is stable enough for greenfield builds. The ecosystem tooling — native n8n nodes, SDK support in LangChain, Anthropic client libraries — is still catching up to v0.2. We treat A2A as production-ready with defensive engineering: explicit TaskState assertions, SSE buffering via edge workers, and token rotation monitoring. For teams without those guardrails in place, expect 2–3 weeks of integration hardening before A2A pipelines are stable under real load.


Further reading

  • FlipFactory.it.com — production MCP server infrastructure, AI automation patterns, and multi-agent deployment guides for fintech, e-commerce, and SaaS teams.

About the author

Sergii Muliarchuk — founder of FlipFactory.it.com. Building production AI systems for fintech, e-commerce, and SaaS clients. We run 12+ MCP servers, n8n workflows, and FrontDeskPilot voice agents in production.

We have shipped A2A-connected agent pipelines to paying clients — not as demos, but as revenue-critical infrastructure handling thousands of tasks per week.

Frequently Asked Questions

Can I run A2A and MCP on the same infrastructure?

Yes — and that is exactly how we run it at FlipFactory. MCP servers expose tool capabilities (scraping, CRM writes, doc parsing). A2A sits above as the inter-agent envelope format, routing task requests between specialized agents. They solve different layers of the stack: MCP is tool-call transport, A2A is agent-to-agent task delegation. Running both requires a shared auth layer; we use Cloudflare Access tokens scoped per server.

What breaks first when A2A agents lose context mid-task?

The artifact state. A2A tasks carry an 'artifacts' field for passing structured outputs between agents. When a downstream agent crashes or times out — something we hit with our 'docparse' MCP server under load in February 2026 — the orchestrator receives a 'failed' TaskState with no artifact payload. Without explicit retry logic in your A2A client, the entire chain silently drops. We now enforce a dead-letter queue in n8n for every A2A task that returns anything other than 'completed'.

Related Articles