askill
acp

acpSafety 95Repository

Use when implementing the Agent Communication Protocol (ACP) for REST-based agent-to-agent communication, task delegation, and multimodal message exchange. USE FOR: ACP agent servers, ACP client integration, agent discovery via manifests, run lifecycle management, session-based stateful workflows, BeeAI agents DO NOT USE FOR: JSON-RPC agent communication (use a2a), tool integration for LLMs (use mcp), agent payments (use ap2 or x402), agent definition (use adl)

0 stars
1.2k downloads
Updated 2/11/2026

Package Files

Loading files...
SKILL.md

ACP — Agent Communication Protocol

Overview

ACP is an open protocol (originally from IBM / BeeAI, now contributed to the Linux Foundation alongside A2A) for communication between AI agents, applications, and humans. It uses plain REST endpoints — no JSON-RPC, no specialized transport — making it usable with standard HTTP tools like curl, Postman, or any HTTP client.

Status: The standalone ACP repository is archived. ACP's design has been merged into the A2A project under the Linux Foundation. New projects should evaluate A2A, but existing ACP deployments and the SDK remain functional.

Core Concepts

Agent Manifest

Every ACP agent exposes a manifest describing its capabilities — without revealing implementation details:

{
  "name": "research-agent",
  "description": "Finds and summarizes information on any topic",
  "metadata": {
    "capabilities": ["streaming", "sessions"]
  }
}

Messages and Parts

Agents exchange Messages composed of Parts. Each part carries a MIME type, enabling multimodal payloads (text, images, audio, files) without protocol changes:

{
  "role": "user",
  "parts": [
    {
      "content": "Summarize this document",
      "content_type": "text/plain",
      "content_encoding": "plain"
    },
    {
      "content": "<base64-data>",
      "content_type": "application/pdf",
      "content_encoding": "base64",
      "name": "report.pdf"
    }
  ]
}

Part Metadata

Parts can carry structured metadata for observability and attribution:

  • TrajectoryMetadata — exposes reasoning steps and tool calls
  • CitationMetadata — attributes content to source documents

REST API

Endpoints

MethodPathDescription
GET/agentsList available agents with their manifests
POST/runsExecute an agent (sync, async, or streaming)

Run Lifecycle

pending → running → [awaiting] → completed / error
StateMeaning
pendingRun queued, not yet started
runningAgent is executing
awaitingAgent paused, requesting external input
completedFinished successfully
errorExecution failed

Communication Modes

ACP supports three response modes on a single endpoint:

  • Synchronous — block until the run completes
  • Asynchronous — return immediately, poll for status
  • Streaming — SSE stream of incremental results

Python Server Example

from acp_sdk.server import Server, Context
from acp_sdk.models import Message, MessagePart

server = Server()

@server.agent()
async def summarizer(input: list[Message], context: Context):
    """Summarizes the provided text."""
    for message in input:
        text = message.parts[0].content
        yield {"thought": "Analyzing content..."}
        yield Message(
            role="agent/summarizer",
            parts=[MessagePart(
                content=f"Summary of: {text[:50]}...",
                content_type="text/plain"
            )]
        )

server.run()

Python Client Example

from acp_sdk.client import Client
from acp_sdk.models import Message, MessagePart

async with Client(base_url="http://localhost:8000") as client:
    # Discover agents
    agents = await client.agents()

    # Synchronous run
    run = await client.run_sync(
        agent="summarizer",
        input=[Message(
            role="user",
            parts=[MessagePart(
                content="Summarize this article...",
                content_type="text/plain"
            )]
        )]
    )
    print(run.output)

Session Management

Sessions enable stateful, multi-turn conversations. The SDK manages session state automatically, giving agents access to complete interaction history:

async with Client(base_url="http://localhost:8000") as client:
    # First turn — creates a session
    run1 = await client.run_sync(
        agent="assistant",
        input=[Message(role="user", parts=[
            MessagePart(content="My name is Alice", content_type="text/plain")
        ])]
    )

    # Second turn — continues the session
    run2 = await client.run_sync(
        agent="assistant",
        session=run1.session_id,
        input=[Message(role="user", parts=[
            MessagePart(content="What is my name?", content_type="text/plain")
        ])]
    )

High Availability

For production deployments, ACP supports centralized storage backends:

  • Redis — fast, in-memory session and run state
  • PostgreSQL — durable, persistent storage
  • Distributed sessions — URI-based resource sharing across server instances

ACP vs A2A vs MCP

AspectACPA2AMCP
TransportREST (HTTP)HTTP + JSON-RPC + SSEstdio, HTTP + SSE
DiscoveryGET /agentsAgent Cards (.well-known/agent.json)Capabilities negotiation
InteractionRuns (sync/async/stream)Tasks (long-running)Request-response (tool calls)
FocusAgent-to-agent + human-to-agentAgent-to-agent delegationAgent-to-tool integration
MultimodalMIME-typed partsTyped partsTool arguments
SessionsBuilt-in stateful sessionsTask contextConversation context

SDKs

LanguageServerClient
Pythonacp-sdkacp-sdk
TypeScriptacp-sdk
# Python
pip install acp-sdk

# TypeScript
npm install acp-sdk

Best Practices

  • Use GET /agents for runtime discovery so clients can dynamically route to the right agent without hardcoding endpoints.
  • Use sessions for multi-turn workflows — the SDK handles session continuity automatically.
  • Use streaming mode for long-running agents to give callers incremental progress.
  • Attach TrajectoryMetadata to parts when exposing reasoning steps for observability.
  • Use Redis or PostgreSQL backends in production for high availability and fault tolerance.
  • Since ACP has merged into A2A, evaluate A2A for greenfield projects — but ACP SDKs remain functional for existing deployments.

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

92/100Analyzed 2/24/2026

High-quality technical skill document covering the Agent Communication Protocol (ACP). Provides comprehensive documentation including core concepts, REST API endpoints, run lifecycle, code examples for Python server/client, session management, high availability options, and comparison with A2A/MCP. Well-structured with clear sections, comparison tables, and practical best practices. Includes 'USE FOR' / 'DO NOT USE FOR' guidance for proper application. Bonus from tags, references, and location in dedicated skills folder. This is a reference-style skill that scores high on actionability and completeness despite not providing step-by-step instructions, as the technical content is accurate, well-organized, and directly applicable to implementing ACP-based agent communication.

95
90
85
90
90

Metadata

Licenseunknown
Version-
Updated2/11/2026
PublisherTyler-R-Kendrick

Tags

apidatabase