Skip to content

Releases: adcontextprotocol/adcp

AdCP v3.0.0

22 Apr 09:53
4472eb2

Choose a tag to compare

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 tarball3.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_key on all mutating requests; formalize seller declaration as discriminated oneOf (#2315, #2436, #2447). Every mutating task now requires an idempotency_key in 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_capabilities as adcp.idempotency = { supported: true, replay_ttl_seconds: <1h–7d, 24h recommended> } OR { supported: false }. When supported: true, sellers respond replayed: true on exact replay, IDEMPOTENCY_CONFLICT when the same key accompanies a different payload, and IDEMPOTENCY_EXPIRED after the declared TTL. When supported: false, sending an idempotency_key is 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_buys by buyer_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: true is a trust-bearing claim, buyers and conformance runners SHOULD probe by replaying with a deliberately-mutated payload — a conformant seller MUST return IDEMPOTENCY_CONFLICT. Sellers declaring supported: true MUST 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_approval is removed. Approvals are now modeled as explicit approval tasks with their own lifecycle, state, and audit trail — decoupled from the media-buy state machine. Enables sales-guaranteed sellers 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_level enum is removed and replaced by two orthogonal fields: budget.reallocation_threshold (number ≥ 0, or reallocation_unlimited: true) for budget autonomy, and plan.human_review_required (boolean) for per-decision review under Art 22. Cross-field if/then rejects human_review_required: false when policy_categories contains fair_housing, fair_lending, fair_employment, or pharmaceutical_advertising, or when any resolved policy carries requires_human_review: true. revisionHistory is append-only; downgrading human_review_required requires a human_override artifact (≥20-char reason, email approver, 24h-fresh approved_at). eu_ai_act_annex_iii seeded as a registry regulation. data_subject_contestation on brand.json (and inline on brand-ref.json) satisfies Art 22(3) discovery.

  • ec06d47, 31aab3a: Specialism taxonomy finalized (#2332, #2336). inventory-lists specialism renamed to property-lists. New collection-lists specialism split out as a sibling under governance. Account migration on specialism declarations complete — agents declare specialism ownership via the account surface. audience-sync already reclassified from governance to media-buy in #2300.

  • 84b322c: Rename compliance taxonomy domainsprotocols (#2300). /compliance/{version}/domains/ becomes /compliance/{version}/protocols/. supported_protocols value maps to compliance path via snake_case → kebab-case (e.g. media_buyprotocols/media-buy/). audience-sync reclassified from governance to media-buy to 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-level reporting_capabilities is source of truth)
    • features.content_standards / features.audience_targeting / features.conversion_tracking (object presence replaces booleans)
    • content_standards_detail → renamed to content_standards
    • brand.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_capabilities on every product (see product.json)
  • a90700f: Revert geo capability flattening (#2157). Restore geo_countries and geo_regions (booleans) and geo_metros and geo_postal_areas (typed objects with additionalProperties: 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_activationpending_start. Add pending_creatives status for approved buys with no creatives assigned. Add top-level compliance_testing: { scenarios: [...] } capability block (not a supported_protocols value) for declaring comply_test_controller support.

  • 100b740: Move storyboards into the protocol as /compliance/{version}/ (#2176). Add specialisms field to get_adcp_capabilities with 21 specialisms across 6 domains (media-buy, creative, signals, governance, brand, sponsored_intelligence). Promote sponsored_intelligence from specialism to full protocol in supported_protocols. Rename broadcast-platformsales-broadcast-tv, social-platformsales-social. Merge property-governance + collection-governance into inventory-lists. Add status: preview marker for 3.1 archetypes (sales-streaming-tv, sales-exchange, sales-retail-media, measurement-verification). Publish per-version protocol tarball at /protocol/{version}.tgz for bulk sync. New enums/specialism.json and enums/adcp-domain.json.

  • 07d82dd: Require account on update_media_buy for governance and account resolution parity with create_media_buy (#2179). Flatten preview_creative union schema into single object with request_type discriminant.

  • b674082: Add GOVERNANCE_DENIED to standard error codes with correctable recovery (#2194). Make signal_id required on get-signals-response signal items. Add context and ext fields to all request/response schemas (governance, collection, property, sponsored-intelligence, content-standards).

  • 60f2a9e: Generalize governance to all purchase types (#2014). Remove media_buy_id from governance schemas — governance_context is the sole lifecycle correlator. Add purchase_type field on check_governance and report_plan_outcome. Add budget allocations on plans for per-type budget partitioning. Audit logs group by governance_context instead of media_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, keyid cap-before-crypto, JWKS resolution via SSRF-validated fetch, replay dedup via jti). sf-binary encoding pinned (#2341) and URL canonicalization tightened (#2343) so independent implementations produce bit-identical canonical inputs. Verifier guidance at docs/building/implementation/security.mdx; test vectors at static/compliance/source/test-vectors/request-signing/.

  • 2e3ec71: Signed JWS governance_context (#2316). governance_context is 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 via sync_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_requests harness profile: given a seller endpoint and a signing keypair, the runner...

Read more

AdCP v3.0.0-rc.2

15 Mar 23:38
3e793c0

Choose a tag to compare

AdCP v3.0.0-rc.2 Pre-release
Pre-release

AdCP 3.0.0-rc.2

Second release candidate for AdCP v3.

Highlights

  • Brand Protocol Rights Lifecycle: get_rights, acquire_rights, and update_rights for brand licensing
  • Structured visual_guidelines on brand.json for generative creative systems
  • Shows and episodes as first-class content dimensions on products
  • ai_media channel for AI platform advertising
  • Property governance integration via optional property_list filtering
  • Campaign governance and policy registry: sync_plans, check_governance, report_plan_outcome, and get_plan_audit_logs for plan-level governance and shared policies
  • Simplified account model with require_operator_auth determining 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

01 Mar 12:44
fabe1da

Choose a tag to compare

AdCP v3.0.0-rc.1 Pre-release
Pre-release

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 targetingkeyword_targets and negative_keywords with match types (broad/phrase/exact) and per-keyword bid prices for search and retail media
  • Optimization goals redesignoptimization_goals array with discriminated union (metric or event kind), multi-goal priority ordering, and reach optimization with frequency bands
  • Signal pricing models — Structured pricing_options array 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 from device_platform (OS)
  • Typed refinementrefine redesigned as typed change-request array with seller acknowledgment via refinement_applied
  • AI provenanceprovenance object with IPTC digital source types, C2PA references, and regulatory disclosures
  • Creative compliancerequired_disclosures, prohibited_claims, and disclosure positions on creative briefs
  • Structured error recoveryrecovery field (transient, correctable, terminal) and 18 standard error codes
  • Agent ergonomicsfields projection, 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

12 Feb 12:42
d9b8449

Choose a tag to compare

AdCP v3.0.0-beta.3 Pre-release
Pre-release

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-response schemas

Minor Changes

  • Account scoping for delivery and artifacts queries (account_id param)
  • sync_accounts task, authorized_operators, and account capabilities
  • Channel fields on property and product schemas
  • CPA pricing model for outcome-based campaigns
  • Conversion tracking with log_event and sync_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; type field now optional on Format
  • reported_metrics on creative formats
  • Geographic exclusion targeting fields
  • preview_creative top-level format_id now optional
  • product_selectors for 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

26 Jan 13:07
56a719d

Choose a tag to compare

AdCP v3.0.0-beta.1 Pre-release
Pre-release

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_capabilities task 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_ratefixed_price
  • price_guidance.floor → top-level floor_price
  • Removed is_fixed discriminator

Creative Management

  • creative_idscreative_assignments with optional weight/placement control

Product Filters

  • required_features changed from string array to object with boolean properties

New Features

Content Standards Protocol

  • list_content_standards, get_content_standards, create_content_standards
  • calibrate_content - Collaborative dialogue for policy alignment
  • validate_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


For full changelog details, see CHANGELOG.md

v2.5.1

24 Dec 12:57
9ba8c55

Choose a tag to compare

What's Changed

  • Fix allOf + additionalProperties validation and add oneOf titles (#334)
  • Remove defaults and example URLs from adagents.json (#335)
  • Fix schema versioning to preserve released versions (#337)

See CHANGELOG.md for full details.

v2.5.0

22 Nov 21:46
993ee3c

Choose a tag to compare

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

19 Oct 14:00

Choose a tag to compare

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_id lookup
  • 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: Removed max_wrapper_depth
    • text-asset.json: Removed max_length
    • webhook-asset.json: Removed fallback_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:

  1. Extract format_id from manifest
  2. Fetch format specification
  3. For each asset, look up asset_id in format's assets_required
  4. Validate asset payload against the type defined in format
  5. Validate constraints from format's requirements field

✨ 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


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

15 Oct 14:42
78e8a85

Choose a tag to compare

🎉 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 language
  • create_media_buy - Launch campaigns across platforms
  • sync_creatives - Synchronize creative assets
  • list_creatives - Query creative library
  • update_media_buy - Update campaign settings
  • get_media_buy_delivery - Real-time performance metrics
  • list_authorized_properties - Discover authorized properties
  • provide_performance_feedback - Share performance outcomes
  • list_creative_formats - Discover supported formats

Creative Protocol

  • build_creative - AI-powered creative generation from briefs
  • preview_creative - Generate visual previews
  • list_creative_formats - Full format specifications

Signals Protocol

  • get_signals - Discover available first-party signals
  • activate_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