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

AspectMCPA2A
Request StyleTool callsTask messages
Response StyleDirect JSONArtifacts
Status SystemUnified status fieldUnified status field
Async HandlingAdCP status payloads over tool calls; optional MCP Tasks wrapperAdCP status payloads in A2A artifacts; optional SSE streaming
Webhookspush_notification_config in tool argsNative PushNotificationConfig
Task ManagementAdCP task_id via webhooks or AdCP polling (get_task_status, legacy tasks/get)AdCP task_id via webhooks or AdCP polling
ContextManual (pass context_id)Automatic (protocol-managed)
Best ForClaude, AI assistantsAgent workflows

Unified Status System

Both protocols use the same status field with consistent values.

Status Handling (Both Protocols)

Every response includes a status field that tells you exactly what to do:
StatusWhat It MeansYour Action
completedTask finishedProcess data, show success
input-requiredNeed user inputRead message, prompt user, follow up
workingProcessing (< 120s)Wait for the open call/stream result; show progress
submittedLong-running (hours to days)Provide webhook or poll less frequently
failedError occurredShow error, handle gracefully
auth-requiredNeed authPrompt for credentials
See Task Lifecycle 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 carry the same AdCP status progression: submittedworkingcompleted/failed The progression above is AdCP application state. MCP Tasks and A2A task state are transport mechanics that can deliver an AdCP payload, but they are not a replacement for AdCP task polling or reconciliation.

MCP Task-Augmented Call (Transport Wrapper)

A2A Async Pattern

Context Management

MCP: Manual Context

A2A: Automatic Context

Clarification Handling

Both protocols use the same status: "input-required" pattern:

Error Handling

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

Choosing a Protocol

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

Next Steps

  • MCP Guide: See MCP Guide for tool calls and context management
  • A2A Guide: See A2A Guide for artifacts and streaming
  • Both protocols: Provide the same capabilities with unified status handling