AdCP 3.3 beta program
3.3 is a minor release with a deliberately short cycle. Its beta follows the same order as 3.2: the protocol first, then the SDKs.
Beta.0 is not waiting for the SDKs. Beta.1 is a two-stage convergence point: publish the corrected protocol checkpoint, then have SDKs ingest that exact bundle. Call beta.1 SDK-backed only after the matching SDK versions and integration evidence are published.
Know which version string to use
The artifact version, wire pin, and documentation selector are related but not interchangeable:
Only send a prerelease wire pin to a peer that advertises that exact value in
get_adcp_capabilities.adcp.supported_versions. Prerelease pins are exact: a buyer pinned to "3.3-beta.0" must not silently negotiate to beta.1, and a stable "3.2" pin must not silently negotiate to a beta.
Test beta.0 without an SDK
Oncev3.3.0-beta.0 is published, download the signed protocol bundle rather than copying schemas from main or from the moving /schemas/3.2.3/ path:
adcp-3.3.0-beta.0/ directory contains:
manifest.json: release version, bundle contents, skills, and file count;schemas/: source-shaped and bundled request/response schemas, includingschemas/manifest.jsonfor the task and capability inventory;compliance/: storyboards, test kits, vectors, and runner contracts;skills/: role guidance for coding agents;openapi/: published OpenAPI artifacts.
- Generate or refresh types from the pinned bundled schemas.
- Validate representative requests and responses for the roles you implement, including
media_buy.features.catalog_ingestionand the DOOHlocationanddooh_inventory_summaryfields. - Compare your advertised tools with
schemas/manifest.json. - Exercise raw MCP or A2A calls with
adcp_version: "3.3-beta.0"against a staging peer that advertises the same pin. - Run the compliance assets with a source-compatible runner if you maintain one. Do not weaken production authentication to accommodate a beta runner.
No 3.3 verification badge is issued from beta.0. The protocol-first cut is an implementation input, not a certification target.
SDK support contract
An SDK support claim must name all of the following:- exact SDK package version;
- exact AdCP prerelease bundle used to generate or load schemas;
- supported roles and transports;
- known unsupported or raw-only surfaces;
- install command and one tested validation command.
beta.1 convergence
The beta.1 protocol checkpoint is ready to cut when:- every first-party SDK’s beta.0 support is marked supported, partial, or unavailable with an exact package version;
- accepted beta.0 protocol feedback is merged;
- the integration scenarios below have run against beta.0 and identify any correction included in the beta.1 candidate;
- copy/paste installation and validation commands have been executed as published;
- the cumulative migration guide and release notes describe any beta.0-to-beta.1 correction that requires adopter action.
3.3.0-beta.1 is published, SDK maintainers ingest that signed bundle and publish an exact beta.1 support statement or an explicit unsupported/partial result. Only after the matching buyer/seller scenarios pass is beta.1 the SDK-backed ecosystem checkpoint. Do not combine an SDK generated from beta.0 with a beta.1 wire pin unless that SDK explicitly documents forward compatibility.
Required integration evidence
Retain the exact protocol bundle, SDK package versions, capability responses, redacted requests and responses, task IDs, and account and MediaBuy identifiers for each run.- Account lifecycle. Call a discovery task (
get_productsorlist_products) with a buyer-declared natural key that was never provisioned. The seller returnsACCOUNT_NOT_FOUND(a seller that provisions lazily instead of exposingsync_accountsmay answer without creating the account), andlist_accountsshows no new account. Then provision, withsync_accountsor the seller’s lazy path on a provisioning task, and repeat the read. - Signed traffic. Send a signed request and receive a signed webhook between two agents that publish
identity.brand_json_url. Confirm agent resolution by canonical URL, and that a pinned key missing from the agent’s JWKS is rejected. - Catalog intake. For a seller that declares
media_buy.features.catalog_ingestion, confirmsync_catalogsrejects an unlisted catalog type, mode, or feed format, and an explicitcontent_id_typeoutside a declaredsupported_content_id_types, withUNSUPPORTED_FEATUREbefore mutation, including on a dry run, and reports oneitem_issuesentry per item on terminal results and discovery reads underper_itemreporting. - End to end. Run one buyer and seller lifecycle through purchase, creative assignment, and a delivery readback.
What may still change
The 3.3.0 milestone is the live scope record for work that may still land during the beta cycle. Use these maintained GitHub views as the live record: Milestone assignment means candidate for the 3.3 line, not a commitment to beta.1 or GA. A change is included in a beta only when it is merged before that beta’s tag. Items may be deferred, split, or moved to a later release as working groups resolve scope and interoperability risk.In working-group review for 3.3
These are proposals, not features. Each issue below carries the
needs-wg-review label and was open in the 3.3.0 milestone on 2026-10-06 (44 issues). None is part of a beta unless it merges before that beta’s tag. The live list is needs-wg-review in the 3.3.0 milestone.- Commercial flow and discovery: #7902 core
opportunityonget_products, #7107 delegated proposal composition, #7659 price adjustments, #7676 cost and vendor-metric outcome targets, #7763 per-account execution readiness, #7852 delivery-mode-aware baseline, #6303 fixed-price non-guaranteed specialism, #5673 best-first ordering, #5316 advertiser legal entity. - Delivery reporting and measurement: #7885
operation_idonreporting_webhook, #7240 metric aggregation semantics, #7253 DOOH impression basis, #6208 cross-tabulated breakdowns, #5880by_propertybreakdown, #5850 projection block, #5968 operational delivery issues, #5687 print delivery semantics, #6878 seller-initiated trackers, #2041 measurement source attribution. - Security and signing: #7878 Web Bot Auth profile, #7820
required_forover A2A, #7817 discoverable signer agent URL, #7066 production security profile, #7812error.mutation_outcome. - Targeting and inventory: #7921 gender in demographic targeting, #6708 presence versus interest targeting, #7051 collection-list exclusions, #6135 property coverage completeness.
- Creative and brand: #6782 preview observation sessions, #6700
get_creative_addons, #5545 derivative lineage, #5544 on-brand check, #5542 rights channel restrictions, #5375build_creativerefinement scope, #5241 creative evaluator. - Signals, audiences, and catalogs: #6552 provider-initiated signal delivery, #5409
build_signal, #5967 catalog-item lifecycle, #5966 audience lifecycle. - Conformance and governance: #7858 storyboard questions from SDK grading (partly addressed), #7068 machine-observed implementation matrix, #5849 renewal lineage, #4587 seller advisory signals, #3959 governance framework mapping.
Known beta boundaries
- Experimental surfaces retain their experimental-status contract. A 3.3 beta does not graduate them to stable.
- The
3.3-betadocumentation selector moves forward; pinned semver artifacts and documentation snapshots remain immutable. - Stable schema aliases continue to resolve to stable releases during beta. Use pinned prerelease URLs when validating beta behavior.
- The
media_buy_seller/unprovisioned_account_referencestoryboard is advisory until runner capability14.1.0.
Report useful feedback
Include this information in a beta issue:- protocol artifact version and wire pin;
- SDK name and version, or
raw wire; - buyer, seller, creative, signals, brand, measurement, or governance role;
- transport and task name;
- schema path or JSON Pointer involved;
- expected and actual behavior;
- minimal redacted payload and validation error;
- whether the problem blocks beta.1 interoperability.