====== Agent Communication Protocol ====== The **Agent Communication Protocol (ACP)** is an open standard developed by [[https://research.ibm.com/projects/agent-communication-protocol|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: * **HTTP-Based Messaging** — Standard REST endpoints (POST for messages) with JSON payloads for routing and task resumption * **Asynchronous Support** — Default async mode via fire-and-forget POSTs with task IDs; clients poll or subscribe via SSE/WebSockets for progress deltas or completion * **Synchronous Support** — Simple HTTP POST/JSON responses for low-latency use cases * **Agent Discovery** — Manifest-based capability advertisement for runtime and offline lookup * **Lifecycle Management** — Defined agent states (INITIALIZING, ACTIVE, RETIRED) with session IDs for stateful interactions * **Multimodal Content** — Native support for text, images, audio, video, and binary data via MIME types ===== Comparison with MCP and A2A ===== ACP exists alongside two other major agent protocols: Anthropic's [[model_context_protocol|Model Context Protocol (MCP)]] and Google's [[agent2agent_protocol|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: * **Capability Tokens** — Signed, unforgeable tokens with expiry for authorization * **OTLP Observability** — OpenTelemetry integration for monitoring and tracing * **Kubernetes RBAC** — Native integration with container orchestration access control * **Transport Security** — Standard HTTPS/TLS for all communications ===== References ===== * [[https://research.ibm.com/projects/agent-communication-protocol|IBM Research — Agent Communication Protocol]] * [[https://agentcommunicationprotocol.dev/introduction/welcome|ACP Official Documentation]] * [[https://www.ibm.com/think/topics/agent-communication-protocol|IBM Think — ACP Overview]] * [[https://akka.io/blog/mcp-a2a-acp-what-does-it-all-mean|Akka Blog — MCP, A2A, ACP Comparison]] ===== See Also ===== * [[model_context_protocol|Model Context Protocol (MCP)]] * [[agent2agent_protocol|Agent-to-Agent Protocol (A2A)]] * [[multi_agent_systems|Multi-Agent Systems]] * [[agent_interoperability|Agent Interoperability]]