Conversation
b0937cb to
5742fb3
Compare
5742fb3 to
e6c9717
Compare
e6c9717 to
ef8f76c
Compare
ef8f76c to
f8db45b
Compare
f8db45b to
7f08781
Compare
7f08781 to
8c354f1
Compare
8c354f1 to
6899151
Compare
6899151 to
8ea39af
Compare
8ea39af to
2e94329
Compare
2e94329 to
8fc280a
Compare
8fc280a to
c9f617c
Compare
c9f617c to
5adfe07
Compare
5adfe07 to
1ade19c
Compare
1ade19c to
a217af8
Compare
a217af8 to
d031fc5
Compare
d489902 to
df14b6b
Compare
df14b6b to
93246d4
Compare
93246d4 to
3eaba68
Compare
3eaba68 to
91bcf9e
Compare
91bcf9e to
efda7bc
Compare
efda7bc to
3d75538
Compare
3d75538 to
fb85f53
Compare
fb85f53 to
f41d95a
Compare
f41d95a to
7cbc661
Compare
7cbc661 to
367d4a9
Compare
367d4a9 to
90f5168
Compare
90f5168 to
45f43a2
Compare
45f43a2 to
3538b6b
Compare
3538b6b to
4ce1805
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
mainis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonmain.Releases
adcontextprotocol@3.0.0-rc.2
Major Changes
account_resolutioncapability field.require_operator_authnow determines both the auth model and account reference style:truemeans explicit accounts (discover vialist_accounts, passaccount_id),falsemeans implicit accounts (declare viasync_accounts, pass natural key).Minor Changes
fe079dc: Add
ai_mediachannel to media channel taxonomy for AI platform advertising (AI assistants, AI search, generative AI experiences). New industry guide for AI media sales agents. Strengthen accounts and sandbox guidance for production sales agents.fc14940: Add brand protocol rights lifecycle: get_rights, acquire_rights, update_rights with generation credentials, creative approval, revocation notifications, and usage reporting. Includes rights-terms shared schema, authenticated webhooks (HMAC-SHA256), actionable vs final rejection convention, DDEX PIE mapping for music licensing, and sandbox tooling for scenario testing.
a326b30: Add visual_guidelines to brand.json schema: photography, graphic style, shapes, iconography, composition, motion, logo placement, colorways, type scale, asset libraries, and restrictions. These structured visual rules enable generative creative systems to produce on-brand assets consistently.
44a8be9: Add optional inline preview to build_creative. Request can set
include_preview: trueto get preview renders in the response alongside the manifest. The preview structure matches preview_creative's single response, so clients parse previews identically regardless of source. For single-format requests,preview_inputscontrols variant generation. For multi-format requests, one default preview per format is returned with explicitformat_idon each entry.preview_erroruses the standard error structure (code,message,recovery) for agent-friendly failure handling. Agents that don't support inline preview simply omit the field.d6518dc: Add quality parameter to preview_creative for controlling render fidelity (draft vs production). Clarify that creative agents and sales agents are not mutually exclusive. A sales agent can implement the Creative Protocol alongside Media Buy Protocol. Updated documentation, certification curriculum, and training agent.
689adb4: Add generation controls to build_creative and preview_creative: quality tier (draft/production), item_limit for catalog cost control, expires_at on build_creative response for generated asset URL expiration, and storyboard reference asset role.
f460ece: Move list_creatives and sync_creatives from media-buy to creative protocol. All creative library operations now live in one protocol — any agent hosting a creative library implements the creative protocol for both reads and writes. Extend build_creative with library retrieval mode (creative_id, macro_values, media_buy_id, package_id). Add creative agent interaction models (supports_generation, supports_transformation, has_creative_library) to get_adcp_capabilities. New creative-variable.json schema for DCO variable definitions. Redesign list_creatives as a library catalog: replace include_performance/performance_score with include_snapshot (lightweight delivery snapshot following get_media_buys pattern), rename has_performance_data filter to has_served, add errors to response. Rename sub-asset.json to item.json and sub_assets to items throughout — neutral naming that works for both native (flat components) and carousel (repeated groups) patterns.
fee669b: Add disclosure persistence model for jurisdiction-specific render requirements.
New
disclosure-persistenceenum with values:continuous(must persist throughout content duration),initial(must appear at start for minimum duration),flexible(presence sufficient, publisher discretion). When multiple sources specify persistence for the same jurisdiction, most restrictive wins:continuous > initial > flexible.Schema changes:
provenance.json: newdeclared_at(date-time) recording when the provenance claim was made, distinct fromcreated_time. Jurisdiction items indisclosure.jurisdictions[]gainrender_guidancewithpersistence,min_duration_ms, andpositions(ordered preference list).format.json: newdisclosure_capabilitiesarray — each entry pairs a disclosure position with its supported persistence modes. Supersedessupported_disclosure_positionsfor persistence-aware matching; the flat field is retained for backward compatibility. Formats should only claim persistence modes they can enforce.creative-brief.json: new optionalpersistenceoncompliance.required_disclosures[]items.list-creative-formats-request.json(media-buy and creative domains): newdisclosure_persistencefilter. Creative-domain request also gainsdisclosure_positionsfilter for parity with media-buy.error-code.json:COMPLIANCE_UNSATISFIEDdescription updated to cover persistence mode mismatches.fe61385: Add exclusivity enum and preferred_delivery_types to product discovery
exclusivityenum (none, category, exclusive) on products and as a filterpreferred_delivery_typessoft preference array on get_products requests0c98c26: Discriminate flat_rate pricing parameters by inventory type and clarify package type names.
Breaking for existing v3 DOOH flat_rate parameters:
flat-rate-option.jsonparametersnow requires a"type": "dooh"discriminator field. Existing implementations passingparameterswithouttypemust add"type": "dooh". Sponsorship/takeover flat_rate options that have noparametersare unaffected.DOOH
parametersfields:sov_percentage,loop_duration_seconds,min_plays_per_hour,venue_package,duration_hours,daypart,estimated_impressions.min_plays_per_hourminimum is now 1 (was 0).get-media-buys-response.jsoninline package items are now titledPackageStatusto distinguish them fromPackageRequest(create input) andPackage(create output). The name reflects what this type adds: creative approval state and an optional delivery snapshot.c3a0883: Add optional
start_timeandend_timeto package schemas and product allocations for per-package flight scheduling.core/package.json,media-buy/package-request.json,media-buy/package-update.json: buyers can set independent flight windows per package within a media buy.core/product-allocation.json: publishers can propose per-flight scheduling in proposals.ff30c6a: Add governance_context to check-governance-request for canonical budget/geo/channel/flight extraction. Add mode to sync-plans plan items. Add committed_budget and typed package budget to report-plan-outcome. Add categories_evaluated and policies_evaluated to check-governance-response.
6a9faa4: build_creative: support multi-format output via target_format_ids
Add
target_format_idsarray as an alternative totarget_format_idon build_creative requests. When provided, the creative agent produces one manifest per requested format and returns them in acreative_manifestsarray. This lets buyers request multiple format variants (e.g., 300x250 + 728x90 + 320x50) in a single call instead of making N sequential requests.Closes build_creative: support agent-driven multi-format output when no target_format_id is specified #1395
c4f8f58: Make
delivery_measurementoptional in the product schema. Publishers without integrated measurement tools can now omit this field rather than providing vague values.9c2a978: Campaign Governance and Policy Registry. Adds governance modes (audit/advisory/enforce), delegations for multi-agency authorization, portfolio governance for holding companies, finding confidence scores, drift detection metrics with thresholds, escalation approval tiers, seller-side governance checks, and a safety model page. Includes unified check_governance with binding discriminator, 14 seeded policies, multi-agent governance composition, and enforced_policies on planned delivery.
5a54824: Move sandbox capability from
media_buy.features.sandboxtoaccount.sandboxinget_adcp_capabilities. Sandbox is account-level, not a media-buy protocol feature — sellers declare it alongside other account capabilities likesupported_billingandaccount_financials.421cb69: Add sandbox to account-ref natural key. Implicit-account operators can reference sandbox accounts via
{ brand, operator, sandbox: true }without provisioning or discovering an account_id. Explicit-account operators discover pre-existing sandbox test accounts vialist_accounts. The sandbox field participates in the natural key but its usage follows the same implicit/explicit account model rules as non-sandbox accounts.fe61385: Add shows and episodes as a content dimension for products. Shows represent persistent content programs (podcasts, TV series, YouTube channels) that produce episodes over time. Products reference shows via
show_idsarray, andget_productsresponses include a top-levelshowsarray. Includes distribution identifiers for cross-seller matching, episode lifecycle states (scheduled, tentative, live, postponed, cancelled, aired, published), break-based ad inventory configuration, talent linking to brand.json, show declarations in adagents.json, show relationships (spinoff, companion, sequel, prequel, crossover), derivative content (clips, highlights, recaps), production quality tiers, season tracking, and international content rating systems (BBFC, FSK).d6866dc: Add payment_terms to sync_accounts request and formalize enum across schemas
30c3ad8: Add
time_budgettoget_productsrequest andincompleteto response.time_budget(Duration): buyers declare how long they will commit to a request. Sellers return best-effort results within the budget and do not start processes (human approvals, expensive external queries) that cannot complete in time.incomplete(array): sellers declare what they could not finish — each entry has ascope(products,pricing,forecast,proposals), a human-readabledescription, and an optionalestimated_waitduration so the buyer can decide whether to retry.secondsto the Durationunitenum.Patch Changes
require_operator_auth: true) discover pre-existing sandbox test accounts vialist_accounts. Implicit accounts declare sandbox viasync_accountswithsandbox: trueand reference by natural key.