Table of Contents

Agent Communication Protocol

The Agent Communication Protocol (ACP) is an open standard developed by IBM Research for enabling seamless, interoperable communication between AI agents across frameworks, languages, and organizations via a unified RESTful HTTP interface. Introduced through the BeeAI platform, ACP addresses ecosystem fragmentation by standardizing agent discovery, task delegation, and messaging without dictating internal agent implementations.

Overview

ACP operates on a client-server model where clients (agents, humans, or services) send HTTP requests to server endpoints wrapping AI agents. Unlike JSON-RPC-based protocols, ACP uses standard REST conventions with JSON payloads, making it accessible via curl, Postman, or any HTTP client without requiring specialized SDKs.

The protocol defines structured message envelopes containing task IDs, metadata, content payloads, and optional streaming channels. Agents publish lightweight manifests describing their capabilities, schemas, and status for both online and offline discovery, supporting scale-to-zero deployments in cloud-native environments.

Core Architecture

ACP's architecture centers on several key mechanisms:

Comparison with MCP and A2A

ACP exists alongside two other major agent protocols: Anthropic's Model Context Protocol (MCP) and Google's Agent-to-Agent (A2A) protocol. Each addresses different communication layers:

Aspect IBM ACP Anthropic MCP Google A2A
Core Protocol REST/HTTP JSON-RPC 2.0 JSON-RPC
Primary Focus Agent-to-agent ops Tool and data access Agent collaboration
Async/Streaming Default async + SSE/WebSockets Task state polling Collaborative tasks
Multimodal Full MIME support Primarily tools/data Metadata-focused
Discovery Online/offline manifests Framework-tied Standardized metadata
SDK Required Optional Often required Varies

ACP is intentionally complementary: MCP connects agents to tools and data sources, A2A handles multi-agent collaboration patterns, and ACP provides the lightweight HTTP transport layer for agent-to-agent messaging.

Code Example

Sending a message to an ACP-compliant agent:

import requests
 
ACP_ENDPOINT = "https://agent-server.example.com/api/v1/messages"
AGENT_ID = "weather-agent-01"
 
payload = {
    "task_id": "task-abc-123",
    "agent_id": AGENT_ID,
    "content": {
        "type": "text/plain",
        "body": "What is the weather forecast for Tokyo?"
    },
    "metadata": {
        "session_id": "session-xyz",
        "priority": "normal"
    }
}
 
response = requests.post(ACP_ENDPOINT, json=payload)
result = response.json()
print(f"Status: {result['status']}, Response: {result['content']['body']}")

Discovering available agents via manifest:

import requests
 
DISCOVERY_URL = "https://agent-server.example.com/api/v1/agents"
 
agents = requests.get(DISCOVERY_URL).json()
for agent in agents["agents"]:
    print(f"Agent: {agent['name']}, Capabilities: {agent['capabilities']}")
    print(f"  Status: {agent['lifecycle_state']}")

Security

ACP incorporates several security mechanisms:

References

See Also