Releases: adcontextprotocol/adcp
AdCP v3.0.0
AdCP 3.0 is the first stable release of the Ad Context Protocol. The headline change is a trust-surface overhaul: mandatory idempotency keys, RFC 9421 request signing, signed governance contexts, compliance-gated test vectors, and GDPR/EU AI Act invariants baked into the schema.
See Migration from rc.3, What's new in v3, or the full release notes.
Protocol tarball — 3.0.0.tgz below is signed with Sigstore cosign (keyless, bound to the Release workflow on main). To verify:
cosign verify-blob 3.0.0.tgz \
--certificate 3.0.0.tgz.crt \
--signature 3.0.0.tgz.sig \
--certificate-identity-regexp 'https://github.com/adcontextprotocol/adcp/' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com'Expected SHA-256: 04481e277089bebe551d3dc1294faab56aa876a7c08e0f010a8ca6ba41a06af4
See release notes for migration guidance, or prerelease upgrade notes for rc.3 adopters.
Breaking Changes — trust surface
-
43586d6, c1d2ff1: Require
idempotency_keyon all mutating requests; formalize seller declaration as discriminated oneOf (#2315, #2436, #2447). Every mutating task now requires anidempotency_keyin the request envelope, matching^[A-Za-z0-9_.:-]{16,255}$; AdCP Verified additionally requires a cryptographically-random UUID v4. Fresh key per logical operation; reuse only to retry a failed request with the identical payload.Sellers declare dedup semantics on
get_adcp_capabilitiesasadcp.idempotency = { supported: true, replay_ttl_seconds: <1h–7d, 24h recommended> }OR{ supported: false }. Whensupported: true, sellers respondreplayed: trueon exact replay,IDEMPOTENCY_CONFLICTwhen the same key accompanies a different payload, andIDEMPOTENCY_EXPIREDafter the declared TTL. Whensupported: false, sending anidempotency_keyis a no-op — the seller will NOT return conflict/expired errors, and a naive retry WILL double-process. Buyers must use natural-key checks (e.g.,get_media_buysbybuyer_ref) before retrying spend-committing operations against non-supporting sellers. Clients MUST NOT assume a default — a seller without this block is non-compliant.Since
supported: trueis a trust-bearing claim, buyers and conformance runners SHOULD probe by replaying with a deliberately-mutated payload — a conformant seller MUST returnIDEMPOTENCY_CONFLICT. Sellers declaringsupported: trueMUST pass this probe in the baseline compliance storyboard before the declaration is considered verified. -
aaace06: Model IO approval at the task layer, not as a media-buy status (#2270, #2351).
MediaBuy.pending_approvalis removed. Approvals are now modeled as explicit approval tasks with their own lifecycle, state, and audit trail — decoupled from the media-buy state machine. Enablessales-guaranteedsellers to implement human-in-the-loop approval without overloading media-buy status semantics. -
e6dd73a: GDPR Art 22 / EU AI Act Annex III enforced as JSON Schema invariants (#2310, #2338).
budget.authority_levelenum is removed and replaced by two orthogonal fields:budget.reallocation_threshold(number ≥ 0, orreallocation_unlimited: true) for budget autonomy, andplan.human_review_required(boolean) for per-decision review under Art 22. Cross-fieldif/thenrejectshuman_review_required: falsewhenpolicy_categoriescontainsfair_housing,fair_lending,fair_employment, orpharmaceutical_advertising, or when any resolved policy carriesrequires_human_review: true.revisionHistoryis append-only; downgradinghuman_review_requiredrequires ahuman_overrideartifact (≥20-char reason, email approver, 24h-freshapproved_at).eu_ai_act_annex_iiiseeded as a registry regulation.data_subject_contestationonbrand.json(and inline onbrand-ref.json) satisfies Art 22(3) discovery. -
ec06d47, 31aab3a: Specialism taxonomy finalized (#2332, #2336).
inventory-listsspecialism renamed toproperty-lists. Newcollection-listsspecialism split out as a sibling undergovernance. Account migration on specialism declarations complete — agents declare specialism ownership via the account surface.audience-syncalready reclassified fromgovernancetomedia-buyin #2300. -
84b322c: Rename compliance taxonomy
domains→protocols(#2300)./compliance/{version}/domains/becomes/compliance/{version}/protocols/.supported_protocolsvalue maps to compliance path via snake_case → kebab-case (e.g.media_buy→protocols/media-buy/).audience-syncreclassified fromgovernancetomedia-buyto match its tool family. Compliance runner path resolution, index.json structure, and catalog documentation all reflect the rename.
Breaking Changes
-
80ecf76: Simplify capabilities model for 3.0 (#2143). Remove redundant boolean gates — object presence is the signal. Make table-stakes fields required.
Removed fields:
media_buy.reporting(product-levelreporting_capabilitiesis source of truth)features.content_standards/features.audience_targeting/features.conversion_tracking(object presence replaces booleans)content_standards_detail→ renamed tocontent_standardsbrand.identity(implied by brand protocol)trusted_match.supported(object presence)targeting.device_platform/targeting.device_type(implied by media_buy)targeting.audience_include/targeting.audience_exclude(implied by audience_targeting)
Required fields:
reporting_capabilitieson every product (seeproduct.json)
-
a90700f: Revert geo capability flattening (#2157). Restore
geo_countriesandgeo_regions(booleans) andgeo_metrosandgeo_postal_areas(typed objects withadditionalProperties: false) as primary capability fields. Remove flat array alternatives (supported_geo_levels,supported_metro_systems,supported_postal_systems) introduced in #2143. -
95f1174: Media buy status lifecycle (#2034). Rename
pending_activation→pending_start. Addpending_creativesstatus for approved buys with no creatives assigned. Add top-levelcompliance_testing: { scenarios: [...] }capability block (not asupported_protocolsvalue) for declaringcomply_test_controllersupport. -
100b740: Move storyboards into the protocol as
/compliance/{version}/(#2176). Addspecialismsfield toget_adcp_capabilitieswith 21 specialisms across 6 domains (media-buy, creative, signals, governance, brand, sponsored_intelligence). Promotesponsored_intelligencefrom specialism to full protocol insupported_protocols. Renamebroadcast-platform→sales-broadcast-tv,social-platform→sales-social. Mergeproperty-governance+collection-governanceintoinventory-lists. Addstatus: previewmarker for 3.1 archetypes (sales-streaming-tv,sales-exchange,sales-retail-media,measurement-verification). Publish per-version protocol tarball at/protocol/{version}.tgzfor bulk sync. Newenums/specialism.jsonandenums/adcp-domain.json. -
07d82dd: Require
accountonupdate_media_buyfor governance and account resolution parity withcreate_media_buy(#2179). Flattenpreview_creativeunion schema into single object withrequest_typediscriminant. -
b674082: Add
GOVERNANCE_DENIEDto standard error codes with correctable recovery (#2194). Makesignal_idrequired onget-signals-responsesignal items. Addcontextandextfields to all request/response schemas (governance, collection, property, sponsored-intelligence, content-standards). -
60f2a9e: Generalize governance to all purchase types (#2014). Remove
media_buy_idfrom governance schemas —governance_contextis the sole lifecycle correlator. Addpurchase_typefield oncheck_governanceandreport_plan_outcome. Add budget allocations on plans for per-type budget partitioning. Audit logs group bygovernance_contextinstead ofmedia_buy_id.
Minor Changes — trust surface
-
9e1b0eb: RFC 9421 request signing profile (optional in 3.0, mandatory under AdCP Verified) (#2323). Agents MAY sign mutating requests using RFC 9421 HTTP Message Signatures with Ed25519 over a canonicalized covered-component list (including method, target URI,
content-digest, and protocol-level fields). Published test vectors (request-signing/positive/*,request-signing/negative/*) and a 15-step verification checklist (alg allowlist,keyidcap-before-crypto, JWKS resolution via SSRF-validated fetch, replay dedup viajti). sf-binary encoding pinned (#2341) and URL canonicalization tightened (#2343) so independent implementations produce bit-identical canonical inputs. Verifier guidance atdocs/building/implementation/security.mdx; test vectors atstatic/compliance/source/test-vectors/request-signing/. -
2e3ec71: Signed JWS
governance_context(#2316).governance_contextis a signed JWS produced by the governance agent and echoed by the buyer in the media-buy envelope. Sellers verify the signature using the governance agent's JWKS (resolved viasync_governance) and bind decisions to a specific buyer, plan, phase, and time. Replaces the opaque-string carrier from earlier 3.0 drafts. Enables sellers to reject stale or forged governance decisions without round-tripping to the governance agent. Fields:alg,typ,iss,sub,aud,phase,exp,iat,jti, plus governance-specific claims. -
f2918f4: Signed-requests runner harness contract (#2350, #2353). Compliance runner declares a
signed_requestsharness profile: given a seller endpoint and a signing keypair, the runner...
AdCP v3.0.0-rc.2
AdCP 3.0.0-rc.2
Second release candidate for AdCP v3.
Highlights
- Brand Protocol Rights Lifecycle:
get_rights,acquire_rights, andupdate_rightsfor brand licensing - Structured
visual_guidelinesonbrand.jsonfor generative creative systems - Shows and episodes as first-class content dimensions on products
ai_mediachannel for AI platform advertising- Property governance integration via optional
property_listfiltering - Campaign governance and policy registry:
sync_plans,check_governance,report_plan_outcome, andget_plan_audit_logsfor plan-level governance and shared policies - Simplified account model with
require_operator_authdetermining auth/account behavior
Breaking changes since rc.1
See the full release notes and v3 overview for migration details.
Schemas
Available in dist/schemas/3.0.0-rc.2/.
Full changelog: https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md
Release notes: https://docs.adcontextprotocol.org/docs/reference/release-notes#version-300-rc2
What's new in v3: https://docs.adcontextprotocol.org/docs/reference/whats-new-in-v3
AdCP v3.0.0-rc.1
AdCP 3.0.0-rc.1
First release candidate for AdCP v3. This release includes all breaking changes and new features planned for v3 GA.
Highlights
- Keyword targeting —
keyword_targetsandnegative_keywordswith match types (broad/phrase/exact) and per-keyword bid prices for search and retail media - Optimization goals redesign —
optimization_goalsarray with discriminated union (metricoreventkind), multi-goal priority ordering, and reach optimization with frequency bands - Signal pricing models — Structured
pricing_optionsarray with three models: CPM, percent of media, and flat fee - Dimension breakdowns — Opt-in reporting dimensions on
get_media_buy_delivery: geo, device type, device platform, audience, placement, keyword - Device type targeting — New
device_type(form factor: desktop, mobile, tablet, ctv, dooh, unknown) distinct fromdevice_platform(OS) - Typed refinement —
refineredesigned as typed change-request array with seller acknowledgment viarefinement_applied - AI provenance —
provenanceobject with IPTC digital source types, C2PA references, and regulatory disclosures - Creative compliance —
required_disclosures,prohibited_claims, and disclosure positions on creative briefs - Structured error recovery —
recoveryfield (transient, correctable, terminal) and 18 standard error codes - Agent ergonomics —
fieldsprojection, opt-in breakdowns, pre-flight capability filtering - Geo proximity targeting — Travel time isochrones, radius, and GeoJSON geometry methods
Breaking changes since beta.3
See the full release notes and what's new in v3 for complete migration guides.
Schemas
Available at https://adcontextprotocol.org/schemas/v3/ (once deployed) and in dist/schemas/3.0.0-rc.1/.
Full changelog: https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md
AdCP v3.0.0-beta.3
AdCP 3.0.0-beta.3
Major Changes
- Brand Manifest: Structured tone guidelines (
voice,attributes,dos,donts) and structured logo fields (orientation,background,variant,usage) - Cursor-based pagination: Standardized across all list operations with shared
pagination-request/pagination-responseschemas
Minor Changes
- Account scoping for delivery and artifacts queries (
account_idparam) sync_accountstask,authorized_operators, and account capabilities- Channel fields on property and product schemas
- CPA pricing model for outcome-based campaigns
- Conversion tracking with
log_eventandsync_event_sources - TIME pricing model for sponsorship-based advertising
- Attribution window metadata in delivery responses
- Brand Protocol for discovery and identity resolution
- Commerce attribution metrics (
new_to_brand_rate,roas) - Creative delivery reporting with variant-level data
- Delivery forecasting with budget curves and daypart targeting
- Deprecate FormatCategory enum;
typefield now optional on Format reported_metricson creative formats- Geographic exclusion targeting fields
preview_creativetop-levelformat_idnow optionalproduct_selectorsfor commerce product discovery- Signal Catalog for data providers
- Functional restriction overlays (age, device platform, language)
- Typed asset requirements schemas for all creative format asset types
- Universal macro enum with 54 standard macros
Patch Changes
- Replace real brand examples with fictional names (Acme Corp, Pinnacle Media, Nova Brands)
See PR #961 for full details.
AdCP v3.0.0-beta.1
AdCP 3.0.0-beta.1
This is the first beta release of AdCP 3.0, introducing major protocol enhancements for governance, capability discovery, and media channel taxonomy.
🚀 Highlights
- Media Channel Taxonomy - New standardized channel definitions replacing the previous enum
- Content Standards Protocol - Brand safety and suitability evaluation framework
- Property Governance Protocol - Feature-based property filtering for compliance
- Unified Capability Discovery -
get_adcp_capabilitiestask for cross-protocol discovery - Pricing Option Improvements - Better separation of hard constraints vs soft hints
Breaking Changes
Media Channel Taxonomy
Replaces channel enum values with 19 planning-oriented media channels:
display,olv,social,search,ctv,linear_tv,radio,streaming_audio,podcast,dooh,ooh,print,cinema,email,gaming,retail_media,influencer,affiliate,product_placement
Pricing Options
fixed_rate→fixed_priceprice_guidance.floor→ top-levelfloor_price- Removed
is_fixeddiscriminator
Creative Management
creative_ids→creative_assignmentswith optional weight/placement control
Product Filters
required_featureschanged from string array to object with boolean properties
New Features
Content Standards Protocol
list_content_standards,get_content_standards,create_content_standardscalibrate_content- Collaborative dialogue for policy alignmentvalidate_content_delivery- Batch validate delivery records
Property Governance
- Property list management (
create_property_list,update_property_list, etc.) - Feature-based filtering and validation
Capability Discovery
get_adcp_capabilities- Protocol-level task for cross-protocol discovery- Structured geo targeting with named systems (nielsen_dma, us_zip, etc.)
- Governance capability declarations
Resources
- Schemas: https://adcontextprotocol.org/schemas/v3/
- Documentation: https://docs.adcontextprotocol.org
- Migration Guide: https://docs.adcontextprotocol.org/docs/reference/migrating-to-v3
For full changelog details, see CHANGELOG.md
v2.5.1
v2.5.0
See full release notes at https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#250
Highlights
- Discriminated Union Types: Improved TypeScript code generation with explicit discriminator fields
- Extension Fields: and fields for custom data across protocol
- Atomic Response Semantics: Success XOR error pattern for safer operations
- Batch Preview Support: Preview 1-50 creatives in one API call
- Full Package Objects: Consistent responses from create/update operations
Full details in CHANGELOG.md
v2.1.0 - Asset Schema Simplification
AdCP v2.1.0 - Asset Schema Simplification
Major architectural improvements that eliminate schema duplication and clarify the separation between asset payloads and format requirements.
🎯 Key Changes
Removed asset_type from Creative Manifest Wire Format
- Asset payloads no longer include redundant type information
- Asset types determined by format specification via
asset_idlookup - Validation is now format-aware
Deleted Duplicate Asset Type Schemas
- Removed 11 duplicate schema files (
/creative/asset-types/*.json) - Eliminated 1,797 lines of duplicate code
- Registry now references
/core/assets/schemas directly - Single source of truth for each asset type
Cleaned Up Core Asset Schemas
- Removed constraint fields that belong in format specifications:
vast-asset.json: Removedmax_wrapper_depthtext-asset.json: Removedmax_lengthwebhook-asset.json: Removedfallback_required
📖 Migration Guide
Schema References
- const schema = await fetch('/schemas/v1/creative/asset-types/image.json')
+ const schema = await fetch('/schemas/v1/core/assets/image-asset.json')Creative Manifest Structure
{
"assets": {
"banner_image": {
- "asset_type": "image",
"url": "https://cdn.example.com/banner.jpg",
"width": 300,
"height": 250
}
}
}Validation Approach
Old: Standalone asset validation
validate(assetPayload, imageAssetSchema)New: Format-aware validation
const format = await fetchFormat(manifest.format_id)
const assetRequirement = format.assets_required.find(a => a.asset_id === assetId)
const assetSchema = await fetchAssetSchema(assetRequirement.asset_type)
validate(assetPayload, assetSchema)🏗️ Architecture
Clear Separation of Concerns:
- Core asset schemas (
/core/assets/) = Payload structure (what you send) - Format specifications = All constraints and requirements
Validation Flow:
- Extract
format_idfrom manifest - Fetch format specification
- For each asset, look up
asset_idin format'sassets_required - Validate asset payload against the type defined in format
- Validate constraints from format's
requirementsfield
✨ Benefits
✅ Single source of truth for each asset type
✅ Eliminated 1,797 lines of duplicate code
✅ Clear separation between payload and requirements
✅ Format-aware validation is more accurate
✅ Simpler maintenance and evolution
✅ No more confusion about which schema to reference
📦 What's Included
- Comprehensive migration guide in CHANGELOG.md
- Updated documentation with validation flow examples
- All tests passing with new architecture
- Backward compatibility guidance
🔗 Resources
👥 Contributors
- @brianokelley
- Claude Code AI Assistant
Note: While this release includes breaking changes to schema structure, we're releasing as v2.1.0 (minor version) rather than v3.0.0 to maintain continuity during early protocol adoption.
AdCP v2.0.0 - Production Release
🎉 AdCP v2.0.0 - Production Release
This is the first production-ready release of the Advertising Context Protocol (AdCP), marking it as stable and ready for real-world implementation.
Highlights
🚀 Complete Protocol Suite
- 9 Media Buy Tasks for full campaign lifecycle management
- 3 Creative Tasks with AI-powered generation
- 2 Signals Tasks for first-party data integration
- Standard Formats Library with industry-standard creative formats
🏠 Enhanced Homepage
- Prominent v2.0.0 release banner
- Comprehensive Key Features section showcasing all capabilities
- Professional design with interactive elements
⚙️ Version Management Infrastructure
- Changesets for automated version management
- Simplified version sync (only 2 files to update!)
- Complete release workflow documentation
What's Included
Media Buy Protocol
get_products- Discover advertising inventory with natural languagecreate_media_buy- Launch campaigns across platformssync_creatives- Synchronize creative assetslist_creatives- Query creative libraryupdate_media_buy- Update campaign settingsget_media_buy_delivery- Real-time performance metricslist_authorized_properties- Discover authorized propertiesprovide_performance_feedback- Share performance outcomeslist_creative_formats- Discover supported formats
Creative Protocol
build_creative- AI-powered creative generation from briefspreview_creative- Generate visual previewslist_creative_formats- Full format specifications
Signals Protocol
get_signals- Discover available first-party signalsactivate_signal- Activate signals for campaigns
Protocol Infrastructure
- MCP (Model Context Protocol) support
- A2A (Agent-to-Agent) protocol support
- Async workflows with webhooks
- Human-in-the-loop approval system
- Comprehensive JSON Schema validation
Technical Details
- Schema Version: 2.0.0
- Standard Formats Version: 1.0.0
- Protocol Support: MCP, A2A
- Node Version: >=18.0
Documentation
Complete documentation is available at https://adcontextprotocol.org including:
- Protocol specification
- Task reference guides
- Integration guides for MCP and A2A
- Standard formats documentation
- Error handling documentation
Version Management
AdCP uses Changesets for version management. See RELEASING.md for the complete release workflow.
What's Next
Future releases will follow semantic versioning:
- Patch versions (2.0.x): Bug fixes and clarifications
- Minor versions (2.x.0): New features (backward compatible)
- Major versions (x.0.0): Breaking changes
Ready to build with AdCP? Start at https://adcontextprotocol.org/docs/intro