Version 2.5.0
Released: November 2025 | Full ChangelogWhat’s New
Version 2.5.0 is a developer experience and API refinement release that significantly improves type safety, schema infrastructure, and creative workflow performance. This release prepares AdCP for production-scale integrations with better TypeScript/Python code generation, stricter validation semantics, and flexible schema versioning. 🎯 Key Themes:- Type Safety & Code Generation - Comprehensive discriminator fields throughout the protocol enable excellent TypeScript/Python type inference and eliminate ambiguous union types.
- Batch Creative Previews - Generate previews for up to 50 creatives in a single API call with optional direct HTML embedding, reducing preview generation time by 5-10x.
-
Schema Infrastructure - Build-time schema versioning with semantic paths (
/schemas/2.5.0/,/schemas/v2/,/schemas/v2.5/) enables version pinning and automatic minor version tracking. - API Consistency - Atomic response semantics (success XOR error) and standardized webhook payloads eliminate ambiguity and improve reliability.
- Signal Protocol Refinement - Activation keys returned per deployment with permission-based access, enabling proper multi-platform signal activation.
-
Template Formats - Dynamic creative sizing with
accepts_parametersenables formats that accept runtime dimensions, durations, and other parameters. - Enhanced Product Discovery - Structured filters with date ranges, budget constraints, country targeting, and channel filtering improve product search precision.
Key Enhancements
Type Safety & Code Generation
- Discriminator fields added to all discriminated union types (destinations, pricing, property selectors, preview requests/responses)
- Atomic response semantics - All task responses now use strict success XOR error patterns with
oneOfdiscriminators - Explicit type declarations on all const fields for proper TypeScript literal type generation
- 31 new enum schemas extracted from inline definitions for better reusability
Schema Infrastructure
- Build-time versioning - Schemas now support semantic version paths (
/schemas/2.5.0/), major version aliases (/schemas/v2/), and minor version aliases (/schemas/v2.5/) - Consistent media buy responses - Both
create_media_buyandupdate_media_buynow return full Package objects - Standardized webhook payload - Protocol envelope at top-level with task data under
resultfield
Product Discovery
- Structured filters - Extracted filter objects into separate schemas (
product-filters.json,creative-filters.json,signal-filters.json) - Enhanced filtering - Date ranges (
start_date,end_date), budget ranges with currency, country targeting, and channel filtering - Full enum support - Filters now accept complete enum values without artificial restrictions
Signal Protocol
- Activation keys -
activate_signalnow returns deployment-specific activation keys (segment IDs, key-value pairs) based on authenticated permissions - Consistent terminology - Standardized on “deployments” throughout signal requests and responses
Creative Protocol
- Batch preview support - Preview multiple creatives in one request (
preview_creativesupports 1-50 items) - Direct HTML embedding - Responses can include raw HTML for iframe-free rendering
- Simplified brand manifest - Single required field (
name) eliminates duplicate type generation - Template formats -
accepts_parametersfield enables dynamic formats (e.g., display_[width]x[height], video_[duration]s) - Inline creative updates -
sync_creativestask provides upsert semantics for updating creatives in existing campaigns
Documentation & Testing
- Testable documentation - All code examples can be validated against live schemas
- Client library prominence - NPM badges and installation instructions in intro
- Fixed 389 broken links across 50 documentation files
Migration Guide
Discriminator Fields (Breaking)
Many schemas now require explicit discriminator fields. Update your code to include these fields: Signal Destinations:Webhook Payload Structure (Breaking)
Webhook payloads now use protocol envelope at top-level: Before:Signal Activation Response (Breaking)
activate_signal response changed from single key to deployments array:
Before:
Template Formats
Formats can now accept parameters for dynamic sizing: Template Format Definition:parameters_from_format_id: true flag indicates dimensions come from the format_id at usage time.
Usage (parameterized format_id):
Enhanced Product Filtering
New structured filters inget_products:
Schema Versioning
New version paths available:/schemas/2.5.0/- Exact version (recommended for production)/schemas/v2.5/- Latest 2.5.x patch (auto-updates for patch releases)/schemas/v2/- Latest 2.x release (auto-updates for minor/patch)/schemas/v1/- Backward compat alias (same as v2)
Breaking Changes
- Discriminator fields required in destinations, property selectors, pricing options, and preview requests
- Webhook payload structure - Task data moved under
resultfield;domainno longer required - Signal activation response - Changed from
activation_keystring todeploymentsarray - Removed legacy creative fields -
media_url,click_url,durationremoved fromlist_creativesresponse
Non-Breaking Additions
- Application
contextobject (optional) in all task requests product_cardandformat_cardfields (optional) for visual UI support- Batch preview mode in
preview_creative(backward compatible) - Package pricing fields in delivery reporting (already documented, now schema-enforced)
- Minor version symlinks (
/schemas/v2.5/)
Version 2.3.0
Released: October 2025 | Full ChangelogWhat’s New
Publisher-Owned Property Definitions - Properties are now owned by publishers and referenced by agents, following the IAB Tech Lab sellers.json model. This eliminates duplication and creates a single source of truth for property information. Placement Targeting - Products can now define multiple placements (e.g., homepage banner, article sidebar), and buyers can assign different creatives to each placement within a product purchase. Simplified Budgets - Budget is now only specified at the package level, enabling mixed-currency campaigns and eliminating redundant aggregation at the media buy level.Migration Guide
Publisher-Owned Properties
Before:https://cnn.com/.well-known/adagents.json.
Remove Media Buy Budget
Before:Breaking Changes
propertiesfield in products →publisher_propertieslist_authorized_propertiesreturnspublisher_domainsarray- Removed
budgetfrom create_media_buy/update_media_buy requests
Version 2.2.0
Released: October 2025 | Full ChangelogWhat’s New
Build Creative Alignment - Thebuild_creative task now follows a clear “manifest-in → manifest-out” transformation model with consistent parameter naming.
Migration Guide
Before:Breaking Changes
build_creativeparameter renamed:source_manifest→creative_manifest- Removed
promoted_offeringsas top-level parameter (now in manifest assets)
Version 2.1.0
Released: January 2025 | Full ChangelogWhat’s New
Simplified Asset Schema - Separated asset payload schemas from format requirement schemas, eliminating redundancy. Asset types are now determined by format specifications rather than declared in manifests.Migration Guide
Before:Breaking Changes
- Removed
asset_typefield from creative manifest payloads - Schema paths changed:
/creative/asset-types/*.json→/core/assets/*-asset.json - Constraint fields moved from asset payloads to format specifications
Version 2.0.0
Released: October 2025 | Full ChangelogWhat’s New
First production release of the Advertising Context Protocol with:- 8 Media Buy Tasks - Complete workflow from product discovery to delivery reporting
- 3 Creative Tasks - AI-powered creative generation and management
- 2 Signals Tasks - First-party data integration
- Standard Formats - Industry-standard display, video, and native formats
- Multi-Protocol Support - Works with MCP and A2A
Core Features
- Natural language product discovery with brief-based targeting
- Asynchronous task management with human-in-the-loop approvals
- JSON Schema validation for all requests and responses
- Publisher-owned property definitions via
.well-known/adagents.json - Comprehensive format specifications with asset requirements
Versioning Policy
AdCP follows Semantic Versioning 2.0.0:- PATCH (x.x.N) - Bug fixes, documentation, clarifications
- MINOR (x.N.0) - New features, backward-compatible additions
- MAJOR (N.0.0) - Breaking changes
Deprecation Process
Breaking changes follow a 6-month deprecation cycle:- Deprecation Notice - Feature marked deprecated in minor release
- Transition Period - Minimum 6 months support with warnings
- Migration Guide - Detailed upgrade path provided
- Breaking Change - Removed in next major version
Additional Resources
- Technical Changelog - CHANGELOG.md
- GitHub Releases - Release Archive
- Community - Slack
- Issues - GitHub Issues
- Support - support@adcontextprotocol.org