Core Concepts
Reasoning Techniques
Memory Systems
Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools & Products
Safety & Governance
Evaluation
Research
Development
Meta
Core Concepts
Reasoning Techniques
Memory Systems
Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools & Products
Safety & Governance
Evaluation
Research
Development
Meta
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.
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.
ACP's architecture centers on several key mechanisms:
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.
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']}")
ACP incorporates several security mechanisms: