Protocol Comparison
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
| Aspect | MCP | A2A |
|---|---|---|
| Request Style | Tool calls | Task messages |
| Response Style | Direct JSON | Artifacts |
| Status System | ✅ Unified status field | ✅ Unified status field |
| Async Handling | Polling with tasks/get | SSE streaming |
| Webhooks | Protocol wrapper extension | Native PushNotificationConfig |
| Task Management | tasks/list, tasks/get tools | Native tasks/list, tasks/get |
| Context | Manual (pass context_id) | Automatic (protocol-managed) |
| Best For | Claude, AI assistants | Agent workflows |
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:| Status | What It Means | Your Action |
|---|---|---|
completed | Task finished | Process data, show success |
input-required | Need user input | Read message, prompt user, follow up |
working | Processing (< 120s) | Poll frequently, show progress |
submitted | Long-running (hours to days) | Provide webhook or poll less frequently |
failed | Error occurred | Show error, handle gracefully |
auth-required | Need auth | Prompt for credentials |
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:submitted → working → completed/failed
MCP Async Pattern
A2A Async Pattern
Webhook & Task Management Differences
Webhook Configuration
Both protocols support webhooks but with different implementation approaches:MCP: Protocol Wrapper Extension
A2A: Native Push Notifications
PushNotificationConfig structure as the universal webhook configuration format across all protocols. This eliminates protocol-specific mapping and provides a consistent developer experience.
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 protocolAfter AdCP 1.6.0: Same pattern using
status: "input-required"
Unified Clarification Pattern
Example: Clarification Flow
User: “Find video products”AdCP Response:
AdCP Response:
Human-in-the-Loop Workflows
Both protocols handle approvals usingstatus: "input-required":
Context Management
MCP: Manual Context
A2A: Automatic Context
Operation Examples
Product Discovery
MCP:Error Handling
Both usestatus: "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