Releases: adcontextprotocol/adcp
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