Skip to main content
Both MCP and A2A provide identical AdCP capabilities using the same unified status system. They differ only in transport format and async handling.

Quick Comparison

Unified Status System

✨ New in AdCP 1.6.0: Both protocols now use the same status field with A2A TaskState values.

Status Handling (Both Protocols)

Every response includes a status field that tells you exactly what to do:
See Core Concepts for complete status handling guide.

Transport Format Differences

Same status and data, different packaging:

MCP Response Format

A2A Response Format

Async Operation Differences

Both protocols handle async operations with the same status progression: submittedworkingcompleted/failed

MCP Async Pattern

A2A Async Pattern

Push Notification Architecture

Both MCP and A2A use HTTP webhooks for async task updates. AdCP keeps the envelope format protocol-specific while using identical data schemas for the business payload.

Key Principles

  • Same data, different envelopes: The AdCP payload (media buy data, product lists, etc.) is identical regardless of protocol
  • Protocol-native delivery: MCP uses mcp-webhook-payload.json, A2A uses native Task objects
  • Unified configuration: Both use pushNotificationConfig with the same authentication structure
For protocol-specific examples and implementation details:

Task Management

Both protocols now provide equivalent task management capabilities:

MCP: AdCP Tasks

A2A: Native RPC Methods

Server Decision Making

In both protocols, the server decides whether to use webhooks:
  • Quick operations (< 120s): Returns working, ignores webhook configuration
  • Long operations (hours/days): Returns submitted, uses webhook if provided
  • Fallback: Clients can always poll regardless of webhook configuration

Clarification Handling

Before AdCP 1.6.0: Different approaches for each protocol
After AdCP 1.6.0: Same pattern using status: "input-required"

Unified Clarification Pattern

Example: Clarification Flow

User: “Find video products”
AdCP Response:
User Follow-up: “Budget is $50K, targeting pet owners” AdCP Response:

Human-in-the-Loop Workflows

Both protocols handle approvals using status: "input-required":
Client handling is identical:

Context Management

MCP: Manual Context

A2A: Automatic Context

Operation Examples

Product Discovery

MCP:
A2A:

Error Handling

Both use status: "failed" with same error structure:

Choosing a Protocol

Choose based on your ecosystem and preferences:

Choose MCP if you’re using:

  • Claude Desktop or Claude Code
  • MCP-compatible AI assistants
  • Simple tool-based integrations
  • Direct JSON responses

Choose A2A if you’re using:

  • Google AI agents or Agent Engine
  • Multi-modal workflows (text + files)
  • Real-time streaming updates
  • Artifact-based data handling

Both protocols provide:

  • ✅ Same AdCP tasks and capabilities
  • ✅ Unified status system for clear client logic
  • ✅ Context management for conversations
  • ✅ Async operation support
  • ✅ Human-in-the-loop workflows
  • ✅ Error handling and recovery

Migration Between Protocols

The unified status system makes it easy to switch protocols:

Next Steps

  • Core Concepts: Read Core Concepts for status handling patterns
  • MCP Guide: See MCP Guide for tool calls and context management
  • A2A Guide: See A2A Guide for artifacts and streaming
  • Migration: Both protocols provide the same capabilities with unified status handling