For production, start with a maintained SDK. AdCP remains an open wire
protocol, and raw schemas are appropriate for SDK authors, code generators,
and specialized infrastructure. A production implementation built directly on
the wire must independently get version negotiation, validation, signing,
authorization, async state, idempotency, retry, compatibility, and audit
behavior right. That is a legitimate enterprise investment, but it should be a
deliberate one—not the default integration path.
Coverage matrix
What “shipped” means at each layer is the L0–L3 checklist. Last updated: 2026-09-11.
Legend: ✅ shipped · ⚠️ partial / role-dependent · ❌ not yet covered. The L0–L3 columns describe the current package, not a 3.2 support claim.
The TypeScript SDK currently provides the broadest L0–L3 surface. Python is a
first-class SDK with complete schema/type coverage and role-dependent higher
layers. The Go
adcp/v3 module provides typed AdCP 3.x surfaces, signing, and
transport/server building blocks with role-dependent coverage. Check the
release links below for changes after this matrix date.
For the status of every published protocol version, see Versions & Compatibility. Migration and archived-version guidance lives under Release notes & migration.
TypeScript and Python are the first-class supported languages, with the
layer coverage shown in the matrix above. Go is moving in the same
direction. Other languages are not on the official roadmap;
community-maintained ports are welcome — see the Builders Working Group
and the Slack community.
Media-buy compatibility across 3.x
Sharing a protocol schema bundle does not imply identical workflow automation. Keep the SDK package version, the served AdCP version, and the seller’s advertised lifecycle tools separate.
The TypeScript coordinator already supports ordinary legacy purchase behavior
with explicit loss opt-ins. Its current listing adapter rejects compact
criteria, and its direct-buy adapter still requires a real feed_version,
even when the caller accepts non-atomic fencing. Products-only brief purchase
continuations provide a separate legacy path. A missing new guarantee does
not make the seller’s established creation API unusable.
On the seller side, the frameworks keep registered legacy handlers available;
implementing compact handlers alone does not generate every legacy behavior.
Retain the established handlers when serving older buyers and choose an
unversioned default appropriate to those integrations.
See the SDK lifecycle compatibility audit
for the nine buyer–seller combinations, exact audited releases, current gaps,
and reproducible probes. TypeScript’s existing
compatibility guide
documents coordinator options, continuation storage, and supported projections.
JavaScript / TypeScript
@adcp/sdk— main entry: caller (createSingleAgentClient,ADCPMultiAgentClient) and shared types@adcp/sdk/server— agent-side server primitives (createAdcpServerFromPlatform, decisioning-platform interfaces); the lower-levelcreateAdcpServerexport is retained under@adcp/sdk/server/legacy/v5@adcp/sdk/signing— RFC 9421 signing primitives@adcp/sdk/signing/server— webhook + request verifiers (createWebhookVerifier,verifyRequestSignature,createExpressVerifier)@adcp/sdk/signing/client— outbound signing (signRequest,signWebhook,createSigningFetch)@adcp/sdk/testing— buyer-side storyboard runner (runStoryboard,comply,testAgent) and seller-side controller scaffold (createComplyController— see Get Test-Ready)@adcp/sdk/conformance— assertion + storyboard helpers for conformance harnesses@adcp/sdk/schemas— bundled AdCP JSON Schemas@adcp/sdk/types— TypeScript type definitions
Maintaining older integrations
Maintaining older integrations
SDK 14 keeps the established 3.0/3.1 tools and compatibility adapters for
mixed-version deployments. It also retains
@adcp/sdk/server/legacy/v5 and
@adcp/sdk/types/v2-5 for applications actively migrating older code. New 3.2
integrations should use the main server and per-tool type exports.Python
Go
adcp/v3 module provides RC.1 generated schemas and types, typed
tool registration, response builders, signing, a compliance test controller,
and transport/server building blocks. Higher-layer coverage remains
role-dependent. The /v3 suffix is required by Go semantic import versioning.
See the Go SDK README for the full API reference.
Resources:
CLI tools
The JavaScript and Python SDKs include command-line tools for testing and development. Both SDKs share the same positional shape:adcp <agent> [tool] [payload]. The first positional is an alias, a built-in (test-mcp, test-a2a), or a URL — protocol is auto-detected. Save aliases with --save-auth to avoid retyping.
JavaScript CLI
adcp storyboard run), conformance grading (adcp grade), and registry diagnostics. See --help for the full surface.
Python CLI
What’s next
- Build an agent — server-side L4 path. Skill files + coding agent.
- Build a caller — client-side L4 path. Install, call, handle responses, ingest reporting.
- Schemas — schema bundle, type generation, version pinning.
- Migrate from hand-rolled — already running an AdCP agent built before the SDKs covered much? Swap one layer at a time.